Sterzare
Lezione 2 di 20 del corso Gioco Godot: Circuito al neon di Coddy.
Ora l'auto gira. Input.get_axis legge due tasti contemporaneamente: -1 per il primo, 1 per il secondo, 0 per nessuno:
var steer := Input.get_axis("move_left", "move_right")Un'auto vera gira solo mentre si muove e gira meno quando si muove appena. Perciò la sterzata è proporzionale alla velocità. velocity.dot(forward) indica quanto velocemente l'auto procede nella direzione in cui è orientata (è negativo quando procede all'indietro):
var speed := velocity.dot(forward)
rotation += steer * turn_speed * delta * clampf(absf(speed) / 90.0, 0.0, 1.0) * signf(speed + 0.01)clampf(absf(speed) / 90.0, 0.0, 1.0) aumenta da 0 quando l'auto è ferma a 1 a 90 pixel al secondo. signf inverte la sterzata quando si procede all'indietro, come fa un'auto vera. In Godot una rotazione maggiore fa girare in senso orario, quindi Right la aumenta.
Sfida
Facile- Aggiungi
@export var turn_speed := 3.2sottomax_speed. - Leggi
steersottothrottle. - Dopo
forward, calcolaspeed. - Dopo che la velocità aumenta, fai girare l'auto con la riga sopra.
Provalo tu
extends Node2D
@export var accel := 260.0
@export var max_speed := 200.0
var velocity := Vector2.ZERO
func _physics_process(delta: float) -> void:
var throttle := Input.get_action_strength("move_up")
var forward := Vector2.RIGHT.rotated(rotation)
velocity += forward * throttle * accel * delta
velocity = velocity.limit_length(max_speed)
position += velocity * delta
$Exhaust.emitting = throttle > 0.0
Tutte le lezioni di Gioco Godot: Circuito al neon
Esercitati da solo: Playground Godot