Menu
CoddyTech

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 = true

Phầ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ờ.

challenge icon

Thử thách

Trung bình

Hiển thị biểu ngữ khi nhân vật chạm đến gờ.

  1. Ở cuối _physics_process(), thêm một if: is_on_floor() và position.y < 170.
  2. 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)
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