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;).
Thử thách
Trung bìnhNhấp vào một bệ để xây tháp Arrow trên đó.
- Trong
BuildPad, thêmpublic Tower tower;. - Trong
BuildManager, thêm[SerializeField] private Tower towerPrefab;. TrongUpdate, khiMouse.current.leftButton.wasPressedThisFramexảy ra, hãy bắn một tia qua vị trí chuột. - Nếu tia chạm vào một
BuildPadcótowerlà null, hãy đặtpad.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