Menu
CoddyTech

Diagonali corrette

Fa parte della sezione Input e movimento del percorso Godot di Coddy. Lezione 11 di 28.

L'eroe della lezione precedente è troppo veloce in diagonale. Su e a destra producono una velocità di Vector2(200, -200). Quel vettore è lungo circa 283 pixel, non 200.

.normalized() mantiene la direzione di un vettore e lo porta a una lunghezza esatta di 1. Moltiplicalo per la velocità:

var direction = Vector2(Input.get_axis("move_left", "move_right"), Input.get_axis("move_up", "move_down"))
velocity = direction.normalized() * speed
move_and_slide()

Così ogni direzione si muove a 200 pixel al secondo. Quando viene normalizzato, Vector2(0, 0) resta zero, quindi l'eroe si ferma.

Input.get_vector() restituisce già una direzione lunga al massimo 1. Anche velocity = Input.get_vector("move_left", "move_right", "move_up", "move_down") * speed garantisce una velocità uniforme in diagonale.

challenge icon

Sfida

Medio

Fai camminare l'eroe a 200 pixel al secondo in ogni direzione, anche in diagonale. Usa .normalized() su una direzione Vector2, oppure usa Input.get_vector().

Provalo tu

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 iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Input e movimento

Esercitati da solo: Playground Godot