Diagonais equilibradas
Parte da seção Entrada e movimento do Journey de Godot da Coddy. Lição 11 de 28.
O personagem da lição anterior se move rápido demais na diagonal. Para cima e para a direita resultam em uma velocidade de Vector2(200, -200). Esse vetor tem cerca de 283 pixels de comprimento, não 200.
.normalized() mantém a direção de um vetor e faz com que ele tenha exatamente 1 de comprimento. Multiplique isso pela velocidade:
var direction = Vector2(Input.get_axis("move_left", "move_right"), Input.get_axis("move_up", "move_down"))
velocity = direction.normalized() * speed
move_and_slide()Assim, todas as direções se movem a 200 pixels por segundo. Vector2(0, 0) continua sendo zero quando normalizado, então o personagem para.
Input.get_vector() já retorna uma direção com comprimento máximo de 1. velocity = Input.get_vector("move_left", "move_right", "move_up", "move_down") * speed também é equilibrado nas diagonais.
Desafio
MédioFaça o herói andar a 200 pixels por segundo em todas as direções, inclusive nas diagonais. Use .normalized() em uma direção Vector2 ou use Input.get_vector().
Experimente você mesmo
extends CharacterBody2D
var speed = 200
func _physics_process(delta):
velocity.x = Input.get_axis("move_left", "move_right") * speed
velocity.y = Input.get_axis("move_up", "move_down") * speed
move_and_slide()
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Entrada e movimento
2CharacterBody2D
CharacterBody2DAnde com velocidadeParedes impedem seu avançoAnde por toda parteDiagonais equilibradasPratique por conta própria: Playground de Godot