Menu
CoddyTech

Двойной прыжок

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

challenge icon

Задание

Средне

Дайте герою возможность прыгать дважды подряд.

  1. Добавьте в начале var jumps_left = 0 и присваивайте ему значение 2, когда is_on_floor().
  2. Прыгайте, когда 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()
quiz iconПроверьте себя

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

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

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