Ехать
Урок 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 * deltalimit_length ограничивает скорость значением max_speed. Умножение на delta — количество секунд с момента предыдущего кадра — обеспечивает одинаковую скорость на быстром и медленном экране.
Задание
Легко- В
car.gdзамениpassв_physics_processстроками выше. - Наконец, заставь выхлоп светиться, пока ты едешь:
$Exhaust.emitting = throttle > 0.0. - Нажми «Играть» и удерживай стрелку вверх (или 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