Bauplätze
Lektion 7 von 25 im Kurs Unity-Spiel: Tower Defense von Coddy.
Der Spieler baut Türme, indem er auf die grauen Bauflächen klickt. Ein Klick ist ein Punkt auf dem Bildschirm und wird daher zu einem Strahl: Camera.main.ScreenPointToRay gibt den Strahl von der Kamera durch diesen Punkt zurück, und Physics.Raycast meldet den ersten Collider, den er trifft – den unter der Maus.
Ray ray = Camera.main.ScreenPointToRay(Mouse.current.position.ReadValue());
if (Physics.Raycast(ray, out RaycastHit hit))
{
Debug.Log("Clicked " + hit.collider.name);
}Der Strahl trifft auch den Boden, den Pfad und die Bäume. hit.collider.TryGetComponent(out BuildPad pad) prüft, ob das getroffene Objekt eine Baufläche ist, damit andere Klicks nichts bewirken. Alle Szenen hier verwenden das Input System, daher liest Mouse.current die Maus aus (using UnityEngine.InputSystem;).
Aufgabe
MittelKlicke auf ein Feld, um darauf einen Pfeilturm zu bauen.
- Füge in
BuildPadpublic Tower tower;hinzu. - Füge in
BuildManager[SerializeField] private Tower towerPrefab;hinzu. Lass inUpdatebeiMouse.current.leftButton.wasPressedThisFrameeinen Strahl durch die Maus schießen. - Wenn der Strahl ein
BuildPadtrifft, dessentowernull ist, setzepad.tower = Instantiate(towerPrefab, pad.transform.position, Quaternion.identity);.
Drücke „Spielen“ und klicke auf die Felder: Auf jedem steht ein Turm. Drücke dann „Prüfen“.
Probier es selbst
using UnityEngine;
// Kommt später: Bauplätze anklicken, um Türme zu platzieren, der Shop und das Turm-Panel.
public class BuildManager : MonoBehaviour
{
}
Alle Lektionen in Unity-Spiel: Tower Defense
Übe selbstständig: Unity-Playground