Трение
Часть раздела Ввод и перемещение путешествия по Godot на Coddy. Урок 19 из 28.
Большинство игровых персонажей останавливаются быстрее, чем начинают движение. Замедление, когда не нажата ни одна клавиша, называется трением.
Чтобы использовать другое значение для остановки, коду нужны два пути. else добавляет для if второй путь, и выполняется ровно один из двух:
if direction == 0:
velocity.x = move_toward(velocity.x, 0, friction * delta)
else:
velocity.x = move_toward(velocity.x, direction * speed, acceleration * delta)== проверяет, равны ли два значения. Одна = задаёт значение переменной. Условие direction == 0 истинно, когда не нажата ни одна клавиша.
При небольшом значении friction, например 300, персонаж скользит, как по льду. Большое значение, например 2400, останавливает его за несколько кадров.
Задание
СреднеСделай так, чтобы герой быстро останавливался. Когда ни одна клавиша не нажата, уменьшай velocity.x на friction * delta за кадр, пока значение не достигнет 0. Когда клавиша нажата, продолжай ускоряться с помощью acceleration.
Попробуйте сами
extends CharacterBody2D
var speed = 220
var acceleration = 900
var friction = 2400
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
var direction = Input.get_axis("move_left", "move_right")
velocity.x = move_toward(velocity.x, direction * speed, acceleration * delta)
move_and_slide()
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Ввод и перемещение
Потренируйтесь самостоятельно: Песочница Godot