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
- Dodanie
RayCast3D
do sceny
Najpierw dodajemy węzełRayCast3D
do obiektu 3D, np. gracza, postaci czy kamery.
var raycast = RayCast3D.new()
add_child(raycast)
- 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
- Sprawdzanie, czy promień coś wykrył
Używamy metodyis_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.
Dodaj komentarz