Obstáculos Generados Aleatoriamente.
La clase Obstacle
gestiona los obstáculos en el juego, asegurando que se reposicionen cuando salen de la pantalla para mantener una jugabilidad continua.
Métodos
Método Start
private void Start()
{
lastObject = startingLastObject;
player = FindAnyObjectByType<PlayerMVT>().transform;
}
Propósito: Inicializa el último obstáculo y encuentra el transform del jugador.
Funcionamiento:
lastObject = startingLastObject;
: Asigna lastObject
al obstáculo inicial especificado en el Inspector;
player = FindAnyObjectByType<PlayerMVT>().transform;
: Encuentra el transform del jugador utilizando el método FindAnyObjectByType
.
Método OnBecameInvisible
private void OnBecameInvisible()
{
if (player == null) return;
if (transform.position.x >= player.position.x) return;
if (transform == lastObject) return;
Vector2 position = transform.position;
float random = Random.Range(0, 100);
if (random <= 50)
{
position.y = Random.Range(-2, 1);
}
else
{
position.y = Random.Range(15, 18);
}
position.x = lastObject.position.x + Random.Range(6f, 10f);
transform.position = position;
lastObject = transform;
}
Propósito: Reubica el obstáculo cuando sale de la pantalla y cumple ciertas condiciones.
Funcionamiento:
El script verifica que el jugador exista antes de continuar (if (player == null) return;
), comprueba que el obstáculo esté detrás del jugador (if (transform.position.x >= player.position.x) return;
) y evita reposicionar el mismo obstáculo consecutivamente (if (transform == lastObject) return;
).
Obtiene la posición actual del obstáculo (Vector2 position = transform.position;
), genera un número aleatorio (float random = Random.Range(0, 100);
) y ajusta la posición y del obstáculo según el número aleatorio.
Luego, actualiza la posición x en relación con el último obstáculo (position.x = lastObject.position.x + Random.Range(6f, 10f);
) y actualiza lastObject
para referirse al obstáculo actual (lastObject = transform;
).
Resumen
- Inicialización: Establece el último obstáculo inicial y encuentra al jugador;
- Reubicación: Cuando un obstáculo sale de la pantalla y cumple condiciones específicas, se reubica a una distancia aleatoria delante del último obstáculo con una altura aleatoria;
- Condiciones: Garantiza que los obstáculos solo se reubiquen si están detrás del jugador y no sea el mismo obstáculo repetidamente.
Esta configuración permite un flujo continuo de obstáculos en el juego, manteniendo el desafío y la variedad para el jugador.
¡Gracias por tus comentarios!