Menu
CoddyTech

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.

challenge icon

Wyzwanie

Średni

Pady mają skrypt BuildPad, a obiekt Game ma komponent BuildManager, którego towerPrefab to prefabrykat ArrowTower.

  1. W pliku BuildPad.cs dodaj pole publiczne tower typu Tower: wieżę zbudowaną na tym padzie albo null.
  2. W BuildManager dodaj serializowane pole prywatne towerPrefab (typu Tower). W Update, gdy w tej klatce zostanie naciśnięty lewy przycisk myszy, wystrzel promień z kamery przez położenie myszy.
  3. Gdy promień trafi w collider z komponentem BuildPad, a na tym padzie nie ma jeszcze wieży, utwórz instancję towerPrefab w położeniu pada i zapisz nową wieżę w polu tower pada. 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
{
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Gra Unity: Obrona wieżowa