Obstá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.
Obrigado pelo seu feedback!
Pergunte à IA
Pergunte à IA
Pergunte o que quiser ou experimente uma das perguntas sugeridas para iniciar nosso bate-papo
Awesome!
Completion rate improved to 3.33
Obstá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.
Obrigado pelo seu feedback!