Trục
Thuộc phần Những kiến thức cơ bản về lập trình trong Unity trong hành trình Unity của Coddy. Bài học 20 trên 85.
Input.GetAxis("Horizontal") chuyển các phím mũi tên trái và phải (cùng với A và D) thành một số từ -1 đến 1: -1 khi nhấn trái, 1 khi nhấn phải, 0 khi không nhấn phím nào. Input.GetAxis("Vertical") làm tương tự với các phím mũi tên xuống và lên (S và W). Một lần gọi thay thế hai câu lệnh if, và cần điều khiển của tay cầm chơi game cũng điều khiển các trục đó mà không cần thêm code.
Giá trị không thay đổi đột ngột. Với cài đặt mặc định của Unity, nó tiến dần về giá trị đích với tốc độ 3 mỗi giây, nên cần một phần ba giây để đạt 1 sau khi nhấn phím, rồi thêm một phần ba giây để trở về 0 sau khi thả phím. Chuyển động êm dần này giúp tàu đệm khí tăng tốc nhẹ nhàng rồi trôi chậm đến khi dừng lại:
public float speed = 5f;
void Update()
{
float h = Input.GetAxis("Horizontal");
transform.position += new Vector3(h * speed * Time.deltaTime, 0, 0);
}Input.GetAxisRaw("Horizontal") bỏ qua chuyển động êm dần: giá trị luôn chính xác là -1, 0 hoặc 1 ở mỗi khung hình, vì vậy chuyển động bắt đầu và dừng ngay lập tức. Dùng GetAxis cho những thứ cần tạo cảm giác nặng, và GetAxisRaw cho điều khiển nhạy và dứt khoát. Khi nhấn đồng thời cả hai phím mũi tên, cả hai cách đều cho giá trị 0 vì hai hướng triệt tiêu lẫn nhau. (Trong dự án Unity 6, cài đặt Active Input Handling đã đề cập trong bài Điều khiển bằng phím cũng áp dụng cho các trục.)
Thử thách
DễĐiều khiển xe tự hành di chuyển dứt khoát, không giảm tốc từ từ.
- Trong
Update(), đọcfloat h = Input.GetAxisRaw("Horizontal");vàfloat v = Input.GetAxisRaw("Vertical");. - Cộng
new Vector3(h * speed * Time.deltaTime, 0, v * speed * Time.deltaTime)vàotransform.position.
Nhấn Chơi, nhấp vào trò chơi và điều khiển bằng các phím mũi tên hoặc WASD: xe tự hành bắt đầu di chuyển và dừng lại ngay lập tức. Sau đó, nhấn Kiểm tra.
Tự làm thử
using UnityEngine;
public class Rover : MonoBehaviour
{
public float speed = 4f;
void Update()
{
// Horizontal điều khiển chuyển động theo trục x, Vertical theo trục z, không có hiệu ứng chuyển động mượt.
}
}
Tất cả bài học trong Những kiến thức cơ bản về lập trình trong Unity
1C# cơ bản trong Unity
Xin chào, UnityBiếnSố thập phân cần có fVăn bản trong ConsoleBiến có thể ghi nhớIf và elseSo sánh các sốÔn tập: Thu thập xu7Vòng lặp và phương thức
Lặp lại với forVòng lặp lồng nhauViết phương thứcPhương thức trả lờiMảngÔn tập: Cầu thang2Làm cho nó chuyển động
Đặt khối lập phươngDi chuyển theo từng khung hìnhXoay mỗi giâyĐiều khiển bằng các phímÔn tập: Lái khối lập phương5Vectơ
Cộng vectơPhương hướngKhông gian cục bộ và không gian thế giớiTốc độ theo đường chéoKhoảng cách giữa các vậtVector3 là một structÔn tập: Người điều khiển drone8GameObject và thành phần
Tham chiếu trong InspectorLấy một thành phầnThành phần bị thiếuThêm một thành phầnRequireComponentHiện và ẩnÔn tập: Công tắc đèn3Inspector
Các trường trong InspectorSerializeFieldSố thực và MathfThuộc tính trong InspectorÔn tập: thang máy6Biến đổi và hệ phân cấp
Đối tượng cha và conKéo cờ lênTỷ lệNhìn vào các vật thểDi chuyển đến một điểmÔn tập: Mặt trăng quay quanh9Dự án: Bắt lấy ngôi sao
Người bắt saoNgôi sao rơiTự luyện tập: Playground Unity