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».
Thử thách
DễKhiến các bức tường chặn nhân vật.
- Thay dòng
position.xbằng một dòng đặtvelocity.xthànhdirection * speed, không códelta. - 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
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