Menu
CoddyTech

Tạo bệ

Bài học 7 trên 25 trong khóa học Game Unity: thủ thành của Coddy.

Người chơi xây tháp bằng cách nhấp vào các bệ xây dựng màu xám. Mỗi lần nhấp là một điểm trên màn hình, vì vậy nó trở thành một tia: Camera.main.ScreenPointToRay trả về tia từ camera đi qua điểm đó, còn Physics.Raycast cho biết collider đầu tiên mà tia chạm phải, tức là vật nằm dưới chuột.

Ray ray = Camera.main.ScreenPointToRay(Mouse.current.position.ReadValue());
if (Physics.Raycast(ray, out RaycastHit hit))
{
    Debug.Log("Clicked " + hit.collider.name);
}

Tia cũng chạm vào mặt đất, con đường và cây cối. hit.collider.TryGetComponent(out BuildPad pad) kiểm tra xem vật bị chạm có phải là bệ xây dựng hay không, vì vậy những lần nhấp khác sẽ không làm gì. Mọi cảnh ở đây đều dùng Input System, nên Mouse.current đọc chuột (using UnityEngine.InputSystem;).

challenge icon

Thử thách

Trung bình

Nhấp vào một bệ để xây tháp Arrow trên đó.

  1. Trong BuildPad, thêm public Tower tower;.
  2. Trong BuildManager, thêm [SerializeField] private Tower towerPrefab;. Trong Update, khi Mouse.current.leftButton.wasPressedThisFrame xảy ra, hãy bắn một tia qua vị trí chuột.
  3. Nếu tia chạm vào một BuildPad có tower là null, hãy đặt pad.tower = Instantiate(towerPrefab, pad.transform.position, Quaternion.identity);.

Nhấn Play rồi nhấp vào các bệ: mỗi bệ sẽ có một tháp. Sau đó, nhấn Kiểm tra.

Tự làm thử

using UnityEngine;

// Sẽ làm sau: nhấp vào các ô xây dựng để đặt tháp, thêm cửa hàng và bảng điều khiển tháp.
public class BuildManager : MonoBehaviour
{
}

Tất cả bài học trong Game Unity: thủ thành

Tự luyện tập: Playground Unity