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. In alto 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 rende lungo esattamente 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 sposta a 200 pixel al secondo. Vector2(0, 0) rimane zero quando viene normalizzato, 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 è equo in diagonale.

challenge icon

Sfida

Medio

Fai in modo che l’eroe si muova altrettanto velocemente in diagonale.

  1. Inserisci entrambi gli assi in un unico Vector2: var direction = Vector2(Input.get_axis("move_left", "move_right"), Input.get_axis("move_up", "move_down")).
  2. Al posto delle due righe velocity, imposta velocity su direction.normalized() * speed.

Premi «Gioca»: l’eroe cammina a 200 pixel al secondo in ogni direzione, anche in diagonale. Poi premi «Verifica».

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