lima-city: Webhosting, Domains und Cloud
3 Pluspunkte 0 Minuspunkte

Wie kann ich in Godot 4 einen Raycast in gdscript schreiben? Ich habe eine Camera auf meinem Player 

Base
-> MeshInstance3D (Floor)
-> CharacterBody3D (Player)
  -> MeshInstance3D
  -> Colissionshape3D
  -> Node3D (Neck)
    -> Camera3D
-> MeshInstance3D2 (Box1)
-> MeshInstance3D2 (Box2)

und möchte einen Raycast geradeaus z.B 5 Meter machen und alle Collider wissen mit denen er kollidiert ist.

von  

2 Antworten

0 Pluspunkte 0 Minuspunkte

Dazu musst du auf den sogenannten "Space" zugreifen.

extends Node

func _physics_process(delta):

    var from = transform.origin # Startpunkt des Strahls
    var to = Vector3(0, 0, -100) # Endpunkt des Strahls (100 Einheiten vorwärts)

    var space_state = get_world().direct_space_state

    var result = space_state.intersect_ray(from, to)

    if result.size() > 0:
        var collider = result["collider"]
        print("Kollision mit:", collider)

Hier wird intersect_ray verwendet, um zu überprüfen, ob der Strahl von "from" nach "to" mit einem Objekt im Raum kollidiert. Das Ergebnis ist ein Dictionary.

von (397 Punkte)  
0 Pluspunkte 0 Minuspunkte

Füge einen Raycast3D-Node im Scenetree als Child deiner Camera3D ein

Base
-> MeshInstance3D (Floor)
-> CharacterBody3D (Player)
  -> MeshInstance3D
  -> Colissionshape3D
  -> Node3D (Neck)
    -> Camera3D
      -> Raycast3D <-- Script hieran binden
-> MeshInstance3D2 (Box1)
-> MeshInstance3D2 (Box2)

und binde ein neues Script daran.

extends RayCast3D

# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta):
    if is_colliding():
        print("colliding with ", get_collider())
    else:
        print("not colliding")
von (716 Punkte)  
Länge eines Raycast3D in Godot
Diese Community basiert auf dem Prinzip der Selbstregulierung. Beiträge werden von Nutzern erstellt, bewertet und verbessert – ganz ohne zentrale Moderation.

Wer hilfreiche Fragen stellt oder gute Antworten gibt, sammelt Punkte. Mit steigender Punktzahl erhalten Mitglieder automatisch mehr Rechte, zum Beispiel

  • Kommentare verfassen
  • Beiträge bewerten
  • Inhalte bearbeiten
  • Inhalte ausblenden

So entsteht eine Plattform, auf der sich Qualität durchsetzt – getragen von einer engagierten Gemeinschaft. Unser Ziel: Guter Inhalt. Für alle.

2.3k Fragen

2.8k Antworten

260 Kommentare

12 Nutzer