Menu
CoddyTech

Nhảy hai lần

Thuộc phần Đầu vào và di chuyển trong hành trình Godot của Coddy. Bài học 17 trên 28.

Cú nhảy kép cho phép nhân vật nhảy thêm một lần nữa khi đang ở trên không. is_on_floor() không thể cho phép điều đó, nên nhân vật đếm số lần nhảy.

Giữ số lần đếm trong một biến. Đặt biến này thành 2 khi nhân vật chạm đất và giảm đi một sau mỗi lần nhảy:

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

Lần nhảy đầu tiên khiến jumps_left còn 1, còn lần nhảy trên không khiến nó còn 0. Nhấn lần thứ ba sẽ không có tác dụng. Khi tiếp đất, giá trị này trở lại 2.

challenge icon

Thử thách

Trung bình

Cho nhân vật chính nhảy kép.

  1. Thêm var jumps_left = 0 ở đầu, rồi đặt thành 2 khi is_on_floor().
  2. Nhảy khi jumps_left > 0 thay cho is_on_floor(), rồi giảm jumps_left đi một.

Nhấn Chơi: nhân vật chính nhảy hai lần trước khi tiếp đất, không bao giờ nhảy ba lần. Sau đó nhấn Kiểm tra.

Tự làm thử

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 iconTự kiểm tra

Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.

Tất cả bài học trong Đầu vào và di chuyển

Tự luyện tập: Playground Godot