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 -= 1Lầ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.
Thử thách
Trung bìnhCho nhân vật chính nhảy kép.
- Thêm
var jumps_left = 0ở đầu, rồi đặt thành2khiis_on_floor(). - Nhảy khi
jumps_left > 0thay chois_on_floor(), rồi giảmjumps_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()
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
5Dự án: nhân vật anh hùng trong game đi cảnh
Anh hùng: chạyAnh hùng: nhảy3Trọng lực và nhảy
Rơi do trọng lựcNhảy lênChỉ nhảy từ mặt đấtChạy và nhảyNhảy biến thiênNhảy hai lầnTự luyện tập: Playground Godot