Buduj podstawy
Lekcja 5 z 18 w kursie Gra Unity: Obrona wieżowa w Coddy.
Gracz buduje wieże, klikając pola budowy, czyli szare kwadraty obok ścieżki. Kliknięcie następuje na ekranie, w pikselach, a pola znajdują się w świecie 3D, więc kliknięcie staje się promieniem. Camera.main.ScreenPointToRay(point) zwraca promień, który zaczyna się w kamerze i przechodzi przez wskazany punkt ekranu w głąb sceny, a Physics.Raycast podąża nim i zgłasza pierwszy napotkany collider: ten, który gracz widzi pod kursorem myszy. Narzędzie malarskie, które koloruje blok, w który klikniesz:
void Update()
{
if (!Mouse.current.leftButton.wasPressedThisFrame)
{
return;
}
Ray ray = Camera.main.ScreenPointToRay(Mouse.current.position.ReadValue());
if (Physics.Raycast(ray, out RaycastHit hit) && hit.collider.TryGetComponent(out Paintable block))
{
block.Paint(brushColor);
}
}Druga część wyrażenia && jest wykonywana tylko wtedy, gdy promień w coś trafi, więc hit jest wypełnione. TryGetComponent sprawdza następnie, czy trafiony obiekt jest tym, na którym ci zależy: promień trafia również w ziemię, ścieżkę i drzewa, które nie mają komponentu Paintable, więc te kliknięcia nic nie robią.
Każda scena tutaj korzysta wyłącznie z Input System w Unity 6, więc Mouse.current odczytuje mysz. Jej pozycja jest podana w pikselach ekranu, czego wymaga ScreenPointToRay.
Wyzwanie
ŚredniPady mają skrypt BuildPad, a obiekt Game ma komponent BuildManager, którego towerPrefab to prefabrykat ArrowTower.
- W pliku
BuildPad.csdodaj pole publicznetowertypu Tower: wieżę zbudowaną na tym padzie albo null. - W
BuildManagerdodaj serializowane pole prywatnetowerPrefab(typu Tower). WUpdate, gdy w tej klatce zostanie naciśnięty lewy przycisk myszy, wystrzel promień z kamery przez położenie myszy. - Gdy promień trafi w collider z komponentem BuildPad, a na tym padzie nie ma jeszcze wieży, utwórz instancję
towerPrefabw położeniu pada i zapisz nową wieżę w polutowerpada. Pad, na którym stoi już wieża, ani żaden obiekt, który nie jest padem, nie powoduje żadnego działania.
Naciśnij Play i kliknij kilka padów, a następnie Check.
Spróbuj swoich sił
using UnityEngine;
// Później: klikanie pól budowy w celu stawiania wież, sklep i panel wieży.
public class BuildManager : MonoBehaviour
{
}
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.