Sistema operacional ou dispositivo - versão Godot:
Windows 10 x64 - Godot 2.1.2.stable.official
Descrição do problema:
Após mover um KinematicBody2D com move(), as transformações do Collider não são atualizadas.
Cada movimento será testado apenas com a posição/transformação inicial do Collider.
Passos para reproduzir:
func _ready():
set_fixed_process(true)
func _fixed_process(delta):
move(Vector2(0, 100))
move(Vector2(100, 0))
set_fixed_process(false)
A só se move para baixo, mas não para a direita.
Mesmo que depois de descer, A caberia sob B.
Deve estar sob B e deve ter se movido em forma de L (primeiro para baixo, depois para a direita).
O movimento não atualiza os Colliders para uma nova posição, então, ao tentar mover para a direita, parece ser bloqueado por B, como seria, se apenas nos movimentássemos para a direita.
Gambiarra:
altere _fixed_process para:
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)
Eu acho que isso é duplicado de # 7951, mas eu gostaria de ter @RandomShaper para confirmar :smiley:
Sim, é a mesma questão.
Eu perdi aquele.
Obrigado.
Comentários muito úteis
Eu acho que isso é duplicado de # 7951, mas eu gostaria de ter @RandomShaper para confirmar :smiley: