Sistema operativo o dispositivo - Versión Godot:
Windows 10 x64 - Godot 2.1.2.estable.oficial
Descripcion del problema:
Después de mover un KinematicBody2D con move(), las transformaciones de Collider no se actualizan.
Cada movimiento solo probará con la posición/transformación inicial del Colisionador.
Pasos para reproducir:
func _ready():
set_fixed_process(true)
func _fixed_process(delta):
move(Vector2(0, 100))
move(Vector2(100, 0))
set_fixed_process(false)
A solo se mueve hacia abajo, pero no hacia la derecha.
Aunque después de moverse hacia abajo, A encajaría debajo de B.
Debería estar debajo de B y debería haberse movido en forma de L (primero hacia abajo, luego hacia la derecha).
Move no actualiza Colliders a una nueva posición, por lo que al intentar moverse a la derecha, parece estar bloqueado por B, como lo estaría si solo nos moviéramos a la derecha.
Solución alterna:
cambie _fixed_process a:
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)
Creo que esto es un duplicado de #7951, pero me gustaría tener @RandomShaper para confirmar :smiley:
Sí, es el mismo problema.
Me perdí ese.
Gracias.
Comentario más útil
Creo que esto es un duplicado de #7951, pero me gustaría tener @RandomShaper para confirmar :smiley: