Budowanie platform
Lekcja 7 z 25 w kursie Gra w Unity: Obrona wieży w Coddy.
Gracz buduje wieże, klikając szare pola budowy. Kliknięcie wskazuje punkt na ekranie, więc staje się promieniem: Camera.main.ScreenPointToRay zwraca promień biegnący z kamery przez ten punkt, a Physics.Raycast zgłasza pierwszy trafiony przez niego collider — ten pod kursorem myszy.
Ray ray = Camera.main.ScreenPointToRay(Mouse.current.position.ReadValue());
if (Physics.Raycast(ray, out RaycastHit hit))
{
Debug.Log("Clicked " + hit.collider.name);
}Promień trafia również w ziemię, ścieżkę i drzewa. hit.collider.TryGetComponent(out BuildPad pad) sprawdza, czy trafiony obiekt jest polem budowy, więc pozostałe kliknięcia nic nie robią. Wszystkie sceny w tym kursie korzystają z Input System, dlatego Mouse.current odczytuje dane myszy (using UnityEngine.InputSystem;).
Wyzwanie
ŚredniKliknij pole, aby zbudować na nim wieżę Arrow.
- W
BuildPaddodajpublic Tower tower;. - W
BuildManagerdodaj[SerializeField] private Tower towerPrefab;. WUpdate, gdyMouse.current.leftButton.wasPressedThisFramejest prawdą, wyślij promień przez pozycję myszy. - Jeśli promień trafi w
BuildPad, któregotowerma wartość null, ustawpad.tower = Instantiate(towerPrefab, pad.transform.position, Quaternion.identity);.
Naciśnij „Graj” i kliknij pola: na każdym stanie jedna wieża. Następnie naciśnij „Sprawdź”.
Spróbuj swoich sił
using UnityEngine;
// Do zrobienia później: klikanie pól budowy w celu stawiania wież, sklep i panel wieży.
public class BuildManager : MonoBehaviour
{
}
Wszystkie lekcje w sekcji Gra w Unity: Obrona wieży
Poćwicz samodzielnie: Edytor online Unity