Menu
CoddyTech

二段跳

本课属于 Coddy Godot 学习旅程的“输入与移动”单元。第 17 课,共 28 课。

二段跳可以让英雄在空中再跳一次。is_on_floor() 无法实现这一点,所以英雄会记录跳跃次数。

用一个变量记录次数。英雄在地面上时将它设为 2,每跳一次就减 1:

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,并在 is_on_floor() 时将它设为 2。
  2. 用 jumps_left > 0 替代 is_on_floor() 来判断是否跳跃,并将 jumps_left 减 1。

按“开始”:英雄落地前会跳两次,不会跳三次。然后按“检查”。

亲手试试

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 在线编辑器