Menu
CoddyTech

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.

challenge icon

Thử thách

Trung bình

Giúp nhân vật chính di chuyển nhanh như nhau theo đường chéo.

  1. Đặ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")).
  2. Thay hai dòng velocity bằng cách đặt velocity thành direction.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()
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