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

Ich habe diesen Code für einen Raycast3D. Wie kann ich aber feststellen ob der Collider des Player mit einem anderen Objekt überlappt? Also z.B wenn der Player in ein anderes Objekt hineingelaufen ist. Wenn das z.B eine Kugel ist dann läuft er in der Mitta ja früher hinein weil sie oben und unten enger zusammen ist.

func shoot():
    var space = get_world_3d().direct_space_state
    var query = PhysicsRayQueryParameters3D.create(
    global_position,
    global_position - global_transform.basis.z * 2
    )
    var collision = space.intersect_ray(query)
    if collision:
        print(collision.collider.name)
von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

Das kannst du mit PhysicsShapeQueryParameters3D und der Methode intersect_shape. In den QueryParameters setzt du das zu prüfende (hier das eigene) Shape und die Position.

func check_collision():
    var space_state = get_world_3d().direct_space_state
    var transform = global_transform
    var query = PhysicsShapeQueryParameters3D.new()
    query.shape = collision_shape.shape
    query.transform = transform
    var results = space_state.intersect_shape(query)
    for result in results:
        if result.collider:
            print("Kollision mit:", result.collider.name)
von (720 Punkte)  
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
  • Fragen und Antworten bewerten
  • Themen von Fragen bearbeiten
  • Fragen, Antworten und Kommentare bearbeiten
  • Inhalte ausblenden

So entsteht eine Plattform, auf der sich Qualität durchsetzt – getragen von einer engagierten Gemeinschaft.

2.3k Fragen

2.8k Antworten

265 Kommentare

14 Nutzer