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:
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)
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.
Hilfreichster Kommentar
Ich denke, dies ist ein Duplikat von # 7951, aber ich möchte, dass @RandomShaper bestätigt :smiley: