Menu
CoddyTech

Aufräumen

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

challenge icon

Aufgabe

Mittel

Die Blöcke verschwinden nie: Nach einer Minute Spielzeit fallen 60 von ihnen unter den Boden, und das Skript bewegt sie weiterhin alle. Behalte alles aus den vorherigen Schritten bei und ändere die Schleife, die die Blöcke bewegt:

  • Ein Block, dessen y-Wert unter -1 liegt, befindet sich unter dem Boden. Zerstöre ihn und entferne ihn aus blocks, damit die Schleife ihn nicht mehr bewegt.

Drücke Play und 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));
        }

        foreach (GameObject block in blocks)
        {
            block.transform.position += Vector3.down * fallSpeed * Time.deltaTime;
        }
    }
}

Alle Lektionen in Grundlagen des Scripting in Unity