Menu
CoddyTech

Getroffen!

Teil des Abschnitts Grundlagen des Scripting in Unity der Unity-Journey von Coddy. Lektion 63 von 67.

challenge icon

Aufgabe

Mittel

Jetzt wird es gefährlich. Behalte alles aus den vorherigen Schritten bei und beende das Spiel, wenn ein Block den Läufer berührt:

  • Beide sind 1 Einheit breite Würfel. Ein Block berührt den Läufer also, wenn ihre x-Positionen weniger als 1 Einheit auseinanderliegen und ihre y-Positionen weniger als 1 Einheit auseinanderliegen.
  • Überprüfe jeden Block nach seiner Bewegung in jedem Frame. Bei einer Berührung gib Game over aus und schalte das Skript mit enabled = false aus, damit der Läufer, die Blöcke und das Erzeugen neuer Blöcke anhalten.

Drücke Play und schau, wie lange du durchhältst, dann Check.

Probier es selbst

using System.Collections.Generic;
using UnityEngine;

public class Runner : MonoBehaviour
{
    [SerializeField] private float speed = 6f;
    [SerializeField] private float laneEdge = 4f;
    [SerializeField] private GameObject blockPrefab;
    [SerializeField] private float spawnEvery = 1f;
    [SerializeField] private float fallSpeed = 5f;

    private List<GameObject> blocks = new List<GameObject>();
    private float timer;

    void Update()
    {
        Vector3 p = transform.position;
        p.x += Input.GetAxisRaw("Horizontal") * speed * Time.deltaTime;
        p.x = Mathf.Clamp(p.x, -laneEdge, laneEdge);
        transform.position = p;

        timer += Time.deltaTime;
        if (timer >= spawnEvery)
        {
            timer = 0f;
            Vector3 spot = new Vector3(Random.Range(-laneEdge, laneEdge), 10f, 0f);
            blocks.Add(Instantiate(blockPrefab, spot, Quaternion.identity));
        }

        for (int i = blocks.Count - 1; i >= 0; i--)
        {
            blocks[i].transform.position += Vector3.down * fallSpeed * Time.deltaTime;
            if (blocks[i].transform.position.y < -1f)
            {
                Destroy(blocks[i]);
                blocks.RemoveAt(i);
            }
        }
    }
}

Alle Lektionen in Grundlagen des Scripting in Unity