Menu
CoddyTech

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;).

challenge icon

Wyzwanie

Średni

Kliknij pole, aby zbudować na nim wieżę Arrow.

  1. W BuildPad dodaj public Tower tower;.
  2. W BuildManager dodaj [SerializeField] private Tower towerPrefab;. W Update, gdy Mouse.current.leftButton.wasPressedThisFrame jest prawdą, wyślij promień przez pozycję myszy.
  3. Jeśli promień trafi w BuildPad, którego tower ma wartość null, ustaw pad.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