Menu
CoddyTech

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.

challenge icon

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.

  1. Trong Update(), khi giữ phím mũi tên phải, dùng transform.Rotate(0, turn * Time.deltaTime, 0);, và dùng -turn cho phím mũi tên trái.
  2. 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

Tự luyện tập: Playground Unity