Menu
CoddyTech

Diagonais equilibradas

Parte da seção Entrada e movimento do Journey de Godot da Coddy. Lição 11 de 28.

O herói da lição anterior é 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 unidade de comprimento. Multiplique esse valor 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, qualquer direção se move a 200 pixels por segundo. Vector2(0, 0) continua sendo zero quando normalizado, então o herói 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 é justo nas diagonais.

challenge icon

Desafio

Médio

Faça o herói se mover na diagonal com a mesma velocidade.

  1. Coloque os dois eixos em um Vector2: var direction = Vector2(Input.get_axis("move_left", "move_right"), Input.get_axis("move_up", "move_down")).
  2. No lugar das duas linhas de velocity, defina velocity como direction.normalized() * speed.

Pressione “Jogar”: o herói anda 200 pixels por segundo em todas as direções, inclusive nas diagonais. Depois, pressione “Verificar”.

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