二段跳
本课属于 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。
挑战
中等让英雄实现二段跳。
- 在顶部添加
var jumps_left = 0,并在is_on_floor()时将它设为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()
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
输入与移动中的所有课
自己练习: Godot 在线编辑器