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
RayCast3Ddo sceny
Najpierw dodajemy węzełRayCast3Ddo 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