Anh hùng: đến gờ đá
Thuộc phần Đầu vào và di chuyển trong hành trình Godot của Coddy. Bài học 28 trên 28.
Mục tiêu là gờ cao có lá cờ. Nhân vật mang theo một Banner, một Label ẩn có dòng chữ You made it!
Trên mặt đất, position.y của nhân vật là 278. Trên bậc, giá trị này là 218, còn trên gờ là 158. Vì vậy, nhân vật ở trên gờ khi đang chạm sàn và position.y nhỏ hơn 170:
if is_on_floor() and position.y < 170:
$Banner.visible = truePhần is_on_floor() rất quan trọng. Khi nhảy từ mặt đất, nhân vật cũng vượt qua mức 170 trong chốc lát, nhưng lúc đó đang ở trên không.
Để thắng, hãy nhảy qua hố, rồi lên bậc, sau đó lên gờ.
Thử thách
Trung bìnhHiển thị biểu ngữ khi nhân vật chạm đến gờ.
- Ở cuối
_physics_process(), thêm mộtif:is_on_floor()vàposition.y < 170. - Bên trong đó, hiển thị
$Banner.
Nhấn “Chơi” rồi trèo lên gờ: You made it! sẽ xuất hiện trên biểu ngữ. Sau đó nhấn “Kiểm tra”.
Tự làm thử
extends CharacterBody2D
var speed = 220
var acceleration = 1200
var friction = 2400
var gravity = 1000
var jump_velocity = -500
var start_position = Vector2()
func _ready():
start_position = position
func _physics_process(delta):
velocity.y += gravity * delta
if Input.is_action_just_pressed("jump") and is_on_floor():
velocity.y = jump_velocity
var direction = Input.get_axis("move_left", "move_right")
if direction == 0:
velocity.x = move_toward(velocity.x, 0, friction * delta)
else:
velocity.x = move_toward(velocity.x, direction * speed, acceleration * delta)
if direction > 0:
$Look.scale.x = 1
if direction < 0:
$Look.scale.x = -1
move_and_slide()
if position.y > 400:
position = start_position
velocity = Vector2(0, 0)
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ảyTự luyện tập: Playground Godot