Menu
CoddyTech

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

challenge icon

Aufgabe

Mittel

Klicke auf ein Feld, um darauf einen Pfeilturm zu bauen.

  1. Füge in BuildPad public Tower tower; hinzu.
  2. Füge in BuildManager [SerializeField] private Tower towerPrefab; hinzu. Lass in Update bei Mouse.current.leftButton.wasPressedThisFrame einen Strahl durch die Maus schießen.
  3. Wenn der Strahl ein BuildPad trifft, dessen tower null ist, setze pad.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