Menu
CoddyTech
flag Ru iconРусскийdown icon

Трение

Часть раздела Ввод и перемещение путешествия по 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, останавливает его за несколько кадров.

challenge icon

Задание

Средне

Сделай так, чтобы герой быстро останавливался. Когда ни одна клавиша не нажата, уменьшай 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()
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Ввод и перемещение

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