Двойной прыжок
Часть раздела Ввод и перемещение путешествия по Godot на Coddy. Урок 17 из 28.
Двойной прыжок позволяет герою прыгнуть в воздухе ещё один раз. is_on_floor() этого не позволяет, поэтому герой подсчитывает свои прыжки.
Храни количество прыжков в переменной. Устанавливай его равным 2, когда герой на земле, и вычитай единицу за каждый прыжок:
var jumps_left = 0
func _physics_process(delta):
velocity.y += gravity * delta
if is_on_floor():
jumps_left = 2
if Input.is_action_just_pressed("jump") and jumps_left > 0:
velocity.y = jump_velocity
jumps_left -= 1После первого прыжка значение jumps_left становится равным 1, а после прыжка в воздухе — 0. Третье нажатие ничего не делает. При приземлении значение снова становится равным 2.
Задание
СреднеДайте герою возможность прыгать дважды подряд.
- Добавьте в начале
var jumps_left = 0и присваивайте ему значение2, когдаis_on_floor(). - Прыгайте, когда
jumps_left > 0, вместо проверкиis_on_floor(), и уменьшайте значениеjumps_leftна единицу.
Нажмите «Играть»: герой прыгает дважды, прежде чем приземлиться, но никогда не прыгает трижды. Затем нажмите «Проверить».
Попробуйте сами
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
if Input.is_action_just_released("jump") and velocity.y < 0:
velocity.y = velocity.y / 2
velocity.x = Input.get_axis("move_left", "move_right") * speed
move_and_slide()
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Ввод и перемещение
3Гравитация и прыжки
Падение под действием гравитацииПрыжок вверхТолько с полаБег и прыжокПрыжок с переменной высотойДвойной прыжокПотренируйтесь самостоятельно: Песочница Godot