Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprende Obstáculos Generados Aleatoriamente. | Mejorar el Juego de Flappy Bird
Juego de Lucha en Unity

bookObstá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.

question mark

¿Qué determina la nueva posición y del objeto cuando se vuelve invisible y se reposiciona?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 5. Capítulo 3

Pregunte a AI

expand

Pregunte a AI

ChatGPT

Pregunte lo que quiera o pruebe una de las preguntas sugeridas para comenzar nuestra charla

bookObstá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.

question mark

¿Qué determina la nueva posición y del objeto cuando se vuelve invisible y se reposiciona?

Select the correct answer

¿Todo estuvo claro?

¿Cómo podemos mejorarlo?

¡Gracias por tus comentarios!

Sección 5. Capítulo 3
some-alt