Menu
CoddyTech

Lasciali cadere

Fa parte della sezione Fondamenti di scripting in Unity del percorso Unity di Coddy. Lezione 77 di 85.

challenge icon

Sfida

Medio

Fai cadere ogni blocco dell’elenco. Mantieni tutto ciò che hai fatto nei passaggi precedenti.

  1. Aggiungi [SerializeField] private float fallSpeed = 5f;.
  2. Alla fine di Update(), crea un ciclo con foreach (GameObject block in blocks).
  3. Al suo interno, aggiungi Vector3.down * fallSpeed * Time.deltaTime a block.transform.position.

Premi «Gioca»: i blocchi piovono oltre il corridore. Poi premi «Verifica».

Provalo tu

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;

    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 -= spawnEvery;
            Vector3 spot = new Vector3(Random.Range(-laneEdge, laneEdge), 10f, 0f);
            blocks.Add(Instantiate(blockPrefab, spot, Quaternion.identity));
        }
    }
}

Tutte le lezioni di Fondamenti di scripting in Unity

Esercitati da solo: Playground Unity