Menu
CoddyTech

Ехать

Урок 1 из 20 курса Игра на Godot: Неоновый круг на Coddy.

В этом курсе ты создашь целую игру, по одной функции за урок: неоновую гоночную игру с видом сверху. Ты будешь соревноваться с тремя соперниками на протяжении трёх кругов по светящейся трассе.

В проекте для тебя подготовлены три скрипта: car.gd для машины, rival.gd для соперников и race.gd для гонки. Ещё две части уже готовы и остаются вне поля зрения: трасса, которая рисует дорогу и отвечает на вопросы о ней, и сцена. Тебе не нужно будет их менять.

Сегодня машина учится ездить. Она хранит velocity: сколько пикселей она перемещается за секунду и в каком направлении. Направление, куда смотрит машина, задаётся её rotation, преобразованным в вектор направления:

var forward := Vector2.RIGHT.rotated(rotation)

Пока удерживается клавиша Up, скорость увеличивается в этом направлении на accel за секунду. Input.get_action_strength равен 1.0, пока клавиша нажата, и 0.0, когда она не нажата:

var throttle := Input.get_action_strength("move_up")
velocity += forward * throttle * accel * delta
velocity = velocity.limit_length(max_speed)
position += velocity * delta

limit_length ограничивает скорость значением max_speed. Умножение на delta — количество секунд с момента предыдущего кадра — обеспечивает одинаковую скорость на быстром и медленном экране.

challenge icon

Задание

Легко
  1. В car.gd замени pass в _physics_process строками выше.
  2. Наконец, заставь выхлоп светиться, пока ты едешь: $Exhaust.emitting = throttle > 0.0.
  3. Нажми «Играть» и удерживай стрелку вверх (или W).

Попробуйте сами

extends Node2D

@export var accel := 260.0
@export var max_speed := 200.0

var velocity := Vector2.ZERO


func _physics_process(delta: float) -> void:
	pass  # drive here

Все уроки раздела Игра на Godot: Неоновый круг

Потренируйтесь самостоятельно: Песочница Godot