Menu
CoddyTech
flag Pt iconPortuguêsdown icon

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.

challenge icon

Desafio

Médio

Faç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()
quiz iconTeste seus conhecimentos

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

Pratique por conta própria: Playground de Godot