Menu
CoddyTech

Tường chặn bạ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 9 trên 28.

Các bức tường và cây cột là các nút StaticBody2D. Vật thể tĩnh không bao giờ di chuyển. Mỗi vật thể có một CollisionShape2D làm hình dạng đặc và một ColorRect để vẽ nó.

Chỉ move_and_slide() mới kiểm tra tường. Thay đổi position sẽ di chuyển vật thể mà không kiểm tra, nên vật thể đi xuyên qua tường:

position.x += direction * speed * delta   # xuyên qua tường
velocity.x = direction * speed            # bị tường chặn lại
move_and_slide()

Văn bản sau # là một chú thích. Godot bỏ qua phần này.

Vật thể va vào tường theo một góc sẽ giữ lại phần chuyển động dọc theo tường. Nó trượt thay vì bị khựng lại, đó là lý do tên hàm move_and_slide() có nghĩa là «di chuyển và trượt».

challenge icon

Thử thách

Dễ

Khiến các bức tường chặn nhân vật.

  1. Thay dòng position.x bằng một dòng đặt velocity.x thành direction * speed, không có delta.
  2. Bên dưới dòng đó, gọi move_and_slide().

Nhấn Chơi rồi đi bộ theo cả hai hướng: cột trụ và bức tường sẽ chặn nhân vật. Sau đó, nhấn Kiểm tra.

Tự làm thử

extends CharacterBody2D

var speed = 200

func _physics_process(delta):
	var direction = Input.get_axis("move_left", "move_right")
	position.x += direction * speed * delta

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

Tự luyện tập: Playground Godot