Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Obstáculos Gerados Aleatoriamente. | Melhore o Jogo Flappy Bird
Jogo de Luta no Unity

bookObstáculos Gerados Aleatoriamente.

A classe Obstacle gerencia os obstáculos no jogo, garantindo que eles se reposicionem quando saem da tela para manter a jogabilidade contínua.

Métodos

Método Start

private void Start()
{
    lastObject = startingLastObject;
    player = FindAnyObjectByType<PlayerMVT>().transform;
}

Finalidade: Inicializa o último obstáculo e encontra o transform do jogador.

Como funciona: lastObject = startingLastObject;: Define o lastObject para o obstáculo inicial especificado no Inspector; player = FindAnyObjectByType<PlayerMVT>().transform;: Encontra o transform do jogador usando o 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;
}

Finalidade: Reposicionamento do obstáculo quando ele sai da tela e atende a determinadas condições.

Funcionamento: O script garante que o jogador exista antes de prosseguir (if (player == null) return;), verifica se o obstáculo está posicionado atrás do jogador (if (transform.position.x >= player.position.x) return;) e impede o reposicionamento consecutivo (if (transform == lastObject) return;).

Recupera a posição atual do obstáculo (Vector2 position = transform.position;), gera um número aleatório (float random = Random.Range(0, 100);) e ajusta a posição y do obstáculo com base nesse número aleatório.

Em seguida, atualiza a posição x em relação ao último obstáculo (position.x = lastObject.position.x + Random.Range(6f, 10f);) e atualiza lastObject para referenciar o obstáculo atual (lastObject = transform;).

Resumo

  • Inicialização: Define o último obstáculo inicial e localiza o jogador;
  • Reposicionamento: Quando um obstáculo sai da tela e atende a condições específicas, ele é reposicionado a uma distância aleatória à frente do último obstáculo, com uma altura aleatória;
  • Condições: Garante que os obstáculos só sejam reposicionados se estiverem atrás do jogador e não sejam reposicionados repetidamente o mesmo obstáculo.

Essa configuração permite um fluxo contínuo de obstáculos no jogo, mantendo o desafio e a variedade para o jogador.

question mark

O que determina a nova posição y do objeto quando ele se torna invisível e é reposicionado?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 5. Capítulo 3

Pergunte à IA

expand

Pergunte à IA

ChatGPT

Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo

Awesome!

Completion rate improved to 3.33

bookObstáculos Gerados Aleatoriamente.

Deslize para mostrar o menu

A classe Obstacle gerencia os obstáculos no jogo, garantindo que eles se reposicionem quando saem da tela para manter a jogabilidade contínua.

Métodos

Método Start

private void Start()
{
    lastObject = startingLastObject;
    player = FindAnyObjectByType<PlayerMVT>().transform;
}

Finalidade: Inicializa o último obstáculo e encontra o transform do jogador.

Como funciona: lastObject = startingLastObject;: Define o lastObject para o obstáculo inicial especificado no Inspector; player = FindAnyObjectByType<PlayerMVT>().transform;: Encontra o transform do jogador usando o 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;
}

Finalidade: Reposicionamento do obstáculo quando ele sai da tela e atende a determinadas condições.

Funcionamento: O script garante que o jogador exista antes de prosseguir (if (player == null) return;), verifica se o obstáculo está posicionado atrás do jogador (if (transform.position.x >= player.position.x) return;) e impede o reposicionamento consecutivo (if (transform == lastObject) return;).

Recupera a posição atual do obstáculo (Vector2 position = transform.position;), gera um número aleatório (float random = Random.Range(0, 100);) e ajusta a posição y do obstáculo com base nesse número aleatório.

Em seguida, atualiza a posição x em relação ao último obstáculo (position.x = lastObject.position.x + Random.Range(6f, 10f);) e atualiza lastObject para referenciar o obstáculo atual (lastObject = transform;).

Resumo

  • Inicialização: Define o último obstáculo inicial e localiza o jogador;
  • Reposicionamento: Quando um obstáculo sai da tela e atende a condições específicas, ele é reposicionado a uma distância aleatória à frente do último obstáculo, com uma altura aleatória;
  • Condições: Garante que os obstáculos só sejam reposicionados se estiverem atrás do jogador e não sejam reposicionados repetidamente o mesmo obstáculo.

Essa configuração permite um fluxo contínuo de obstáculos no jogo, mantendo o desafio e a variedade para o jogador.

question mark

O que determina a nova posição y do objeto quando ele se torna invisível e é reposicionado?

Select the correct answer

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 5. Capítulo 3
some-alt