Girar
Lección 2 de 20 del curso Juego de Godot: Circuito Neón de Coddy.
Ahora el coche gira. Input.get_axis lee dos teclas a la vez: -1 para la primera, 1 para la segunda, 0 para ninguna:
var steer := Input.get_axis("move_left", "move_right")Un coche real solo gira mientras avanza, y gira menos cuando apenas se mueve. Por eso, el giro se escala según la velocidad. velocity.dot(forward) indica qué tan rápido va el coche en la dirección hacia la que apunta (negativo cuando avanza hacia atrás):
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 de 0 cuando está detenido a 1 a 90 píxeles por segundo. signf invierte el giro cuando avanza hacia atrás, como haría un coche real. En Godot, una rotación mayor gira en sentido horario, así que la derecha la aumenta.
Desafío
Fácil- Añade
@export var turn_speed := 3.2debajo demax_speed. - Lee
steerdebajo dethrottle. - Después de
forward, calculaspeed. - Después de que aumente la velocidad, gira el coche con la línea de arriba.
Pruébalo tú mismo
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
Todas las lecciones de Juego de Godot: Circuito Neón
Practica por tu cuenta: Playground de Godot