Menu
CoddyTech

Герой: плавный бег

Часть раздела Ввод и перемещение путешествия по Godot на Coddy. Урок 25 из 28.

Герой мгновенно начинает и прекращает движение. Заставь его ускоряться с помощью acceleration и останавливаться с помощью friction:

var direction = Input.get_axis("move_left", "move_right")
if direction == 0:
	velocity.x = move_toward(velocity.x, 0, friction * delta)
else:
	velocity.x = move_toward(velocity.x, direction * speed, acceleration * delta)

Используй значение acceleration 1200 и значение friction 2400. Герой достигает полной скорости примерно за пятую долю секунды, поэтому у него ещё остаётся место, чтобы разбежаться перед ямой.

challenge icon

Задание

Средне

Сделай так, чтобы герой плавно разгонялся и останавливался.

  1. Добавь var acceleration = 1200 и var friction = 2400.
  2. Сохрани ось в var direction. Если клавиши не нажаты, перемещай velocity.x к 0 с шагом friction * delta с помощью move_toward.
  3. Если клавиша нажата, перемещай velocity.x к direction * speed с шагом acceleration * delta с помощью move_toward.

Нажми «Играть»: герой наберёт скорость, немного проскользит после остановки и перепрыгнет через яму. Затем нажми «Проверить».

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

extends CharacterBody2D

var speed = 220
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()

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

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