Godot: Die KinematicBody2D-Bewegung aktualisiert die Kollisionstransformation nicht (nur die erste Bewegung in _fixed_process führt gültige Tests durch)

Erstellt am 16. März 2017  ·  3Kommentare  ·  Quelle: godotengine/godot

Betriebssystem oder Gerät - Godot-Version:
Windows 10 x64 – Godot 2.1.2.stable.official

Fehlerbeschreibung:
Nach dem Verschieben eines KinematicBody2D mit move() werden die Collider-Transformationen nicht aktualisiert.
Jede Bewegung wird nur mit der anfänglichen Collider-Position/Transformation getestet.

Schritte zum Reproduzieren:

  • Richten Sie eine Szene mit 1 KinematicBody2D (A) und 1 StaticBody2D (B) mit rechteckigem CollisionShape2D ein
  • A wird links von B platziert (kann etwas Platz < 100 Pixel haben) und A- und B-CollisionSHapes sind 64 x 64 Pixel groß
  • Fügen Sie A mit Code ein Skript hinzu:
func _ready():
    set_fixed_process(true)

func _fixed_process(delta):
    move(Vector2(0, 100))
    move(Vector2(100, 0))
    set_fixed_process(false)

A bewegt sich nur nach unten, aber nicht nach rechts.
Auch wenn nach dem Verschieben nach unten A unter B passen würde.
Es sollte unter B liegen und sich L-förmig bewegt haben (erst nach unten, dann nach rechts).
Move aktualisiert Colliders nicht auf die neue Position, also scheint es beim Versuch, sich nach rechts zu bewegen, von B blockiert zu werden, so wie es wäre, wenn wir uns nur nach rechts bewegen würden.

Problemumgehung:
ändern Sie _fixed_process in:

func _fixed_process(delta):
    move(Vector2(0, 100))
    var st = get_shape_transform(0) # get current shape transform, assuming we only have 1 shape
    st.o += get_travel() # add move translation to shape transform
    set_shape_transform(0, st) # update shape transform
    move(Vector2(100, 0))
        # you should reset the shape transform to its original state befor returing
    set_fixed_process(false)
archived

Hilfreichster Kommentar

Ich denke, dies ist ein Duplikat von # 7951, aber ich möchte, dass @RandomShaper bestätigt :smiley:

Alle 3 Kommentare

Ich denke, dies ist ein Duplikat von # 7951, aber ich möchte, dass @RandomShaper bestätigt :smiley:

Ja, es ist das gleiche Problem.

Das habe ich verpasst.
Danke.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen