Di chuyển chéo cân bằng
Thuộc phần Đầu vào và di chuyển trong hành trình Godot của Coddy. Bài học 11 trên 28.
Nhân vật chính trong bài học trước di chuyển theo đường chéo quá nhanh. Di chuyển lên và sang phải tạo ra vận tốc Vector2(200, -200). Véc-tơ đó dài khoảng 283 pixel, không phải 200.
.normalized() giữ nguyên hướng của véc-tơ và đưa độ dài của nó về đúng 1. Nhân với tốc độ:
var direction = Vector2(Input.get_axis("move_left", "move_right"), Input.get_axis("move_up", "move_down"))
velocity = direction.normalized() * speed
move_and_slide()Khi đó, di chuyển theo mọi hướng đều đạt tốc độ 200 pixel mỗi giây. Vector2(0, 0) vẫn bằng không sau khi chuẩn hóa, nên nhân vật chính sẽ dừng lại.
Input.get_vector() đã trả về một hướng có độ dài tối đa là 1. velocity = Input.get_vector("move_left", "move_right", "move_up", "move_down") * speed cũng đảm bảo tốc độ khi di chuyển theo đường chéo.
Thử thách
Trung bìnhGiúp nhân vật chính di chuyển nhanh như nhau theo đường chéo.
- Đặt cả hai trục trong một
Vector2:var direction = Vector2(Input.get_axis("move_left", "move_right"), Input.get_axis("move_up", "move_down")). - Thay hai dòng
velocitybằng cách đặtvelocitythànhdirection.normalized() * speed.
Nhấn Chơi: nhân vật chính di chuyển với tốc độ 200 pixel mỗi giây theo mọi hướng, kể cả đường chéo. Sau đó nhấn Kiểm tra.
Tự làm thử
extends CharacterBody2D
var speed = 200
func _physics_process(delta):
velocity.x = Input.get_axis("move_left", "move_right") * speed
velocity.y = Input.get_axis("move_up", "move_down") * 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ảyTự luyện tập: Playground Godot