Không gian cục bộ và không gian thế giới
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 26 trên 85.
Một đối tượng có hệ hướng riêng cũng như hệ hướng của thế giới. transform.forward là hướng mũi của đối tượng (mũi tên màu xanh trong chế độ xem Scene của Unity), được biểu diễn bằng một vector thế giới dài một đơn vị; transform.right và transform.up lần lượt là hướng sang phải và hướng lên của đối tượng. Khi xoay đối tượng, các hướng này cũng xoay theo. Chiếc máy bay giấy này được xoay 90 độ quanh trục y trong cảnh, vì vậy nó bay dọc theo trục x của thế giới, theo hướng mũi máy bay:
public float speed = 4f;
void Update()
{
transform.position += transform.forward * speed * Time.deltaTime;
}transform.Translate(Vector3.forward * speed * Time.deltaTime) cũng làm điều tương tự, vì Translate đọc vector trong hệ tọa độ riêng của đối tượng: ở đó, Vector3.forward có nghĩa là hướng về phía trước của đối tượng. Truyền Space.World làm đối số thứ hai để dùng các trục của thế giới thay vào đó, vì vậy transform.Translate(Vector3.forward * speed * Time.deltaTime, Space.World) di chuyển dọc theo trục z của thế giới, bất kể mũi máy bay hướng về đâu.
transform.Rotate cũng xoay quanh các trục riêng của đối tượng. Khi nhìn từ trên xuống, góc dương quanh trục y xoay một đối tượng đang đứng thẳng sang phải, còn góc âm xoay đối tượng sang trái; hướng transform.forward cũng xoay theo.
Thử thách
DễĐiều khiển xe tăng theo kiểu xe tăng: xoay tại chỗ, lái theo hướng xe đang quay mặt.
- Trong
Update(), khi giữ phím mũi tên phải, dùngtransform.Rotate(0, turn * Time.deltaTime, 0);, và dùng-turncho phím mũi tên trái. - Khi giữ phím mũi tên lên, dùng
transform.Translate(Vector3.forward * speed * Time.deltaTime);.
Nhấn Chơi, xoay và lái: xe tăng đi theo hướng đầu xe chỉ tới. Sau đó nhấn Kiểm tra.
Tự làm thử
using UnityEngine;
public class Tank : MonoBehaviour
{
public float speed = 3f;
public float turn = 90f;
void Update()
{
// Phím mũi tên phải/trái: xoay quanh trục y. Phím mũi tên lên: cho xe tăng chạy theo hướng đang quay đầu.
}
}
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