RayCast3D w Godot jest węzłem służącym do wykrywania kolizji w trójwymiarowej przestrzeni. Umożliwia on „wystrzelenie” promienia z jednego punktu do drugiego, aby sprawdzić, czy napotyka on jakieś obiekty na swojej drodze. Przydatny jest na przykład w detekcji przeszkód, określaniu, czy postać widzi przeciwnika, czy też w wykrywaniu kolizji z otoczeniem.

Podstawowe użycie RayCast3D

  1. Dodanie RayCast3D do sceny
    Najpierw dodajemy węzeł RayCast3D do obiektu 3D, np. gracza, postaci czy kamery.
   var raycast = RayCast3D.new()
   add_child(raycast)
  1. Konfiguracja RayCast3D
    Promień musi mieć ustawiony punkt początkowy i końcowy (lokalnie względem obiektu, do którego należy). Najczęściej promień ma pewien zasięg, np. 10 jednostek wzdłuż osi Z.
   raycast.cast_to = Vector3(0, 0, -10)  # 10 jednostek przed obiektem
   raycast.enabled = true  # Włącz RayCast
  1. Sprawdzanie, czy promień coś wykrył
    Używamy metody is_colliding(), aby sprawdzić, czy promień natrafił na obiekt. Jeśli tak, możemy uzyskać informacje o tym obiekcie, np. jego pozycję lub nazwę.
   if raycast.is_colliding():
       var collider = raycast.get_collider()  # Zwraca obiekt, z którym promień się zderzył
       print("Zderzono z: ", collider.name)

Przykład w GDScript

extends Node3D

# Dodanie RayCast3D do sceny
onready var raycast: RayCast3D = $RayCast3D

func _ready() -> void:
    # Konfiguracja RayCast
    raycast.cast_to = Vector3(0, 0, -10)  # 10 jednostek w przód
    raycast.enabled = true

func _process(delta: float) -> void:
    # Sprawdzanie kolizji
    if raycast.is_colliding():
        var collider = raycast.get_collider()  # Obiekt, z którym promień koliduje
        print("Zderzono z: ", collider.name)

Kluczowe metody i właściwości:

  • cast_to: Ustawia punkt końcowy promienia w lokalnych współrzędnych węzła.
  • is_colliding(): Sprawdza, czy promień zderzył się z obiektem.
  • get_collider(): Zwraca obiekt, z którym promień się zderzył.
  • get_collision_point(): Zwraca punkt w przestrzeni, w którym promień zderzył się z obiektem.
  • get_collision_normal(): Zwraca normalną powierzchni obiektu, z którym promień się zderzył.

RayCast3D może być niezwykle użyteczny w grach 3D do detekcji otoczenia, kolizji, czy nawet w logice sztucznej inteligencji, gdy np. chcesz sprawdzić, czy przeciwnik jest widoczny dla gracza.


Komentarze

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *