Menu
CoddyTech

Nettoyage

Fait partie de la section Les bases du scripting dans Unity du Journey Unity de Coddy. Leçon 62 sur 67.

challenge icon

Défi

Moyen

Les blocs ne disparaissent jamais : après une minute de jeu, 60 d’entre eux tombent sous le sol, et le script continue de tous les déplacer. Conserve tout ce qui a été fait aux étapes précédentes et modifie la boucle qui déplace les blocs :

  • Un bloc dont la coordonnée y est inférieure à -1 se trouve sous le sol. Détruis-le et supprime-le de blocks afin que la boucle cesse de le déplacer.

Appuie sur Play, puis sur Check.

Essayez vous-même

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;
        }
    }
}

Toutes les leçons de Les bases du scripting dans Unity