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 (884 Punkte)