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.
Sfida
MedioFai in modo che l’eroe si muova altrettanto velocemente in diagonale.
- 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")). - Al posto delle due righe
velocity, impostavelocitysudirection.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()
Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Input e movimento
2CharacterBody2D
CharacterBody2DCammina con la velocitàI muri ti fermanoCammina ovunqueDiagonali corretteEsercitati da solo: Playground Godot