Tốc độ theo đường chéo
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 27 trên 85.
Giữ đồng thời phím mũi tên sang phải và lên trên, các trục thô cho hướng (1, 0, 1). Độ dài của nó, .magnitude, là căn bậc hai của 1 + 1, xấp xỉ 1.41. Một nhân vật di chuyển bằng vectơ này sẽ đi được 1.41 đơn vị theo đường chéo trong khoảng thời gian đi được 1 đơn vị thẳng về phía trước: nhanh hơn 41%.
.normalized tạo ra một bản sao của vectơ có cùng hướng và độ dài chính xác 1 đơn vị: (1, 0, 1) trở thành khoảng (0.71, 0, 0.71), còn (0, 0, 5) trở thành (0, 0, 1). Nhân với tốc độ, vectơ này giúp di chuyển với tốc độ đó theo mọi hướng. Con ong này bay về phía bông hoa với tốc độ 2 đơn vị mỗi giây, dù hoa ở gần hay xa; nếu không dùng .normalized, nó sẽ bay càng nhanh khi hoa càng xa:
public Vector3 flower = new Vector3(4, 1, 3);
public float speed = 2f;
void Update()
{
Vector3 toFlower = flower - transform.position;
transform.position += toFlower.normalized * speed * Time.deltaTime;
}Vector3.zero.normalized vẫn giữ nguyên (0, 0, 0), vì số không không có hướng. v.normalized không thay đổi v; v.Normalize() thay đổi chính v.
Thử thách
DễGiúp nhân vật di chuyển theo đường chéo với cùng tốc độ.
- Trong
Update(), tạoVector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));. - Cộng
direction.normalized * speed * Time.deltaTimevàotransform.position.
Nhấn Chơi và giữ hai phím mũi tên: nhân vật di chuyển theo đường chéo không nhanh hơn khi đi thẳng. Sau đó, nhấn Kiểm tra.
Tự làm thử
using UnityEngine;
public class Walker : MonoBehaviour
{
public float speed = 4f;
void Update()
{
// Phím mũi tên hoặc WASD: di chuyển theo trục x và z với tốc độ speed, kể cả khi đi chéo.
}
}
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