Système d'exploitation ou appareil - Version Godot :
Windows 10 x64 - Godot 2.1.2.stable.official
Description du problème:
Après avoir déplacé un KinematicBody2D avec move(), les transformations Collider ne sont pas mises à jour.
Chaque mouvement ne sera testé qu'avec la position/transformation initiale du Collider.
Étapes à reproduire :
func _ready():
set_fixed_process(true)
func _fixed_process(delta):
move(Vector2(0, 100))
move(Vector2(100, 0))
set_fixed_process(false)
A se déplace seulement vers le bas, mais pas vers la droite.
Même si après avoir descendu, A se rangeait sous B.
Il devrait être sous B et devrait s'être déplacé en forme de L (d'abord vers le bas, puis vers la droite).
Move ne met pas à jour Colliders vers une nouvelle position, donc tout en essayant de se déplacer vers la droite, il semble être bloqué par B, comme ce serait le cas si nous nous déplacions uniquement vers la droite.
Solution de contournement:
remplacez _fixed_process par :
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)
Je pense que c'est un doublon de #7951, mais j'aimerais que @RandomShaper confirme :smiley:
Oui, c'est le même problème.
J'ai raté celui-là.
Merci.
Commentaire le plus utile
Je pense que c'est un doublon de #7951, mais j'aimerais que @RandomShaper confirme :smiley: