Плавное ускорение
Часть раздела Ввод и перемещение путешествия по Godot на Coddy. Урок 18 из 28.
Герой набирает полную скорость за один кадр и останавливается за один кадр. Это выглядит скованно.
move_toward(from, to, step) перемещает число from в направлении to не более чем на step, не проходя дальше этой точки. move_toward(0, 220, 15) возвращает 15. При повторении каждый кадр получается 30, 45 и так далее вплоть до 220.
Используй эту функцию для velocity.x, задав скорость, которую требуют нажатые клавиши:
var direction = Input.get_axis("move_left", "move_right")
velocity.x = move_toward(velocity.x, direction * speed, acceleration * delta)acceleration — это скорость, набираемая за секунду, поэтому её нужно умножить на delta. При значении 900 герой достигает скорости 220 примерно за четверть секунды. Если клавиши не нажаты, целевое значение равно 0, поэтому герой постепенно останавливается.
Задание
СреднеСделай так, чтобы герой плавно ускорялся и замедлялся.
- Сохрани
Input.get_axis("move_left", "move_right")вvar direction. - Задай значение
velocity.xс помощьюmove_toward(velocity.x, direction * speed, acceleration * delta).
Нажми «Играть» и удерживай клавишу со стрелкой: герой разгоняется до 220, а когда ты отпускаешь клавишу, замедляется. Затем нажми «Проверить».
Попробуйте сами
extends CharacterBody2D
var speed = 220
var acceleration = 900
var gravity = 1000
var jump_velocity = -500
func _physics_process(delta):
velocity.y += gravity * delta
if Input.is_action_just_pressed("jump") and is_on_floor():
velocity.y = jump_velocity
velocity.x = Input.get_axis("move_left", "move_right") * speed
move_and_slide()
Все уроки раздела Ввод и перемещение
1Действия ввода
Нажми, чтобы двигатьсяВлево и вправоОдна осьЧетыре направленияТолько что нажатоНеобработанный ввод4Плавное движение
Плавное ускорениеТрениеПоворачивайся в направлении движенияНе выходи за границы экранаОграничение по обеим осямПотренируйтесь самостоятельно: Песочница Godot