Menu
CoddyTech

Déjalos caer

Parte de la sección Fundamentos de scripting en Unity del Journey de Unity de Coddy. Lección 77 de 85.

challenge icon

Desafío

Intermedio

Haz que caigan todos los bloques de la lista. Conserva todo lo de los pasos anteriores.

  1. Agrega [SerializeField] private float fallSpeed = 5f;.
  2. Al final de Update(), recorre la lista con foreach (GameObject block in blocks).
  3. Dentro del bucle, suma Vector3.down * fallSpeed * Time.deltaTime a block.transform.position.

Pulsa «Jugar»: los bloques caen pasando junto al corredor. Después, pulsa «Comprobar».

Pruébalo tú mismo

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

Todas las lecciones de Fundamentos de scripting en Unity

Practica por tu cuenta: Playground de Unity