Menu
CoddyTech

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.

challenge icon

Desafío

Fácil
  1. Añade @export var turn_speed := 3.2 debajo de max_speed.
  2. Lee steer debajo de throttle.
  3. Después de forward, calcula speed.
  4. 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