Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Aprenda Explicação do Código | Melhore o Jogo Flappy Bird
Jogo de Luta no Unity

bookExplicação do Código

Código do Jogador

Inicialização no Método Start

private void Start()
{
    startPosition = transform.position;
}

Finalidade: Armazena a posição inicial do jogador quando o jogo começa.

Reinicialização da Posição do Jogador

public void RestartPlayerPosition()
{
    transform.position = startPosition;
    rb.velocity = Vector2.zero;
}

Finalidade: Redefine a posição do jogador para a posição inicial e interrompe qualquer movimento ao definir a velocidade como zero.

Manipulação da Entrada do Jogador no Método Update

private void Update()
{
    Vector2 oldVelocity = rb.velocity;
    if (Input.GetKeyDown(KeyCode.Space))
    {
        oldVelocity.y = 6;
    }
    oldVelocity.x = 4;
    rb.velocity = oldVelocity;
}

Finalidade: Captura a entrada do jogador (tecla espaço) para fazer o jogador "pular" ao definir a velocidade y para 6, enquanto move constantemente o jogador para a direita ao definir a velocidade x para 4.

Manipulação de Colisões

OnCollisionEnter2D

private void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.collider.tag == "ground")
    {
        RestartPlayerPosition();
    }
}

Finalidade: Reinicia a posição do jogador ao colidir com objetos marcados como "ground".

OnTriggerEnter2D

private void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.tag == "win")
    {
        winPanel.SetActive(true);
        SoundManager.instance.PlayEffect(1);
    }
}

Finalidade: Ativa o painel de vitória e reproduz um efeito sonoro quando o jogador colide com objetos marcados como "win".

Resumo

  • Movimento: O jogador se move continuamente para a direita e salta ao pressionar a tecla de espaço;
  • Reinício: A posição do jogador é reiniciada ao colidir com o chão;
  • Vitória: Exibe um painel de vitória e reproduz um som ao alcançar o gatilho de vitória.

Classe SoundManager

Método Start

private void Start()
{
    if (instance == null)
    {
        instance = this;
    }
    else
    {
        Destroy(gameObject);
        return;
    }
    DontDestroyOnLoad(gameObject);
}

Finalidade: Garante que exista apenas uma instância de SoundManager no jogo utilizando o Padrão Singleton. Utiliza DontDestroyOnLoad(gameObject) para manter o objeto entre diferentes cenas.

Método PlayEffect

public void PlayEffect(int index)
{
    if (index >= 0 && index < effects.Count)
    {
        source.PlayOneShot(effects[index]);
    }
}

Finalidade: Recebe um inteiro index para identificar qual efeito sonoro será reproduzido a partir da lista effects. Verifica se o index está dentro do intervalo válido da lista effects e reproduz o efeito sonoro especificado utilizando source.PlayOneShot(effects[index]).

Resumo

  • Padrão Singleton: Garante que apenas uma instância de SoundManager exista no jogo, persistindo entre as cenas;
  • Reprodução de Efeitos Sonoros: Utiliza o método PlayEffect para reproduzir efeitos sonoros especificando seu índice na lista effects;
  • Fonte de Áudio: Utiliza um componente AudioSource para tocar os clipes de áudio.

Classe WinPanel

A classe WinPanel fornece funcionalidades para o painel de interface que aparece quando o jogador vence. Inclui métodos para retornar ao menu principal ou reiniciar o nível, cada um reproduzindo um efeito sonoro e carregando a cena apropriada.

Métodos

Método ReturnToMainMenu

public void ReturnToMainMenu()
{
    SoundManager.instance.PlayEffect(0);
    SceneManager.LoadScene(0);
}

Finalidade: Reproduz um efeito sonoro (índice 0) utilizando SoundManager.instance.PlayEffect(0). Carrega a cena do menu principal com o índice de build 0 utilizando SceneManager.LoadScene(0).

Método RestartLevel

public void RestartLevel()
{
    SoundManager.instance.PlayEffect(0);
    SceneManager.LoadScene("Game");
}

Finalidade: Reproduz um efeito sonoro (índice 0) utilizando SoundManager.instance.PlayEffect(0). Carrega a cena do jogo chamada "Game" utilizando SceneManager.LoadScene("Game").

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

Seção 5. Capítulo 1

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

bookExplicação do Código

Deslize para mostrar o menu

Código do Jogador

Inicialização no Método Start

private void Start()
{
    startPosition = transform.position;
}

Finalidade: Armazena a posição inicial do jogador quando o jogo começa.

Reinicialização da Posição do Jogador

public void RestartPlayerPosition()
{
    transform.position = startPosition;
    rb.velocity = Vector2.zero;
}

Finalidade: Redefine a posição do jogador para a posição inicial e interrompe qualquer movimento ao definir a velocidade como zero.

Manipulação da Entrada do Jogador no Método Update

private void Update()
{
    Vector2 oldVelocity = rb.velocity;
    if (Input.GetKeyDown(KeyCode.Space))
    {
        oldVelocity.y = 6;
    }
    oldVelocity.x = 4;
    rb.velocity = oldVelocity;
}

Finalidade: Captura a entrada do jogador (tecla espaço) para fazer o jogador "pular" ao definir a velocidade y para 6, enquanto move constantemente o jogador para a direita ao definir a velocidade x para 4.

Manipulação de Colisões

OnCollisionEnter2D

private void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.collider.tag == "ground")
    {
        RestartPlayerPosition();
    }
}

Finalidade: Reinicia a posição do jogador ao colidir com objetos marcados como "ground".

OnTriggerEnter2D

private void OnTriggerEnter2D(Collider2D collision)
{
    if (collision.tag == "win")
    {
        winPanel.SetActive(true);
        SoundManager.instance.PlayEffect(1);
    }
}

Finalidade: Ativa o painel de vitória e reproduz um efeito sonoro quando o jogador colide com objetos marcados como "win".

Resumo

  • Movimento: O jogador se move continuamente para a direita e salta ao pressionar a tecla de espaço;
  • Reinício: A posição do jogador é reiniciada ao colidir com o chão;
  • Vitória: Exibe um painel de vitória e reproduz um som ao alcançar o gatilho de vitória.

Classe SoundManager

Método Start

private void Start()
{
    if (instance == null)
    {
        instance = this;
    }
    else
    {
        Destroy(gameObject);
        return;
    }
    DontDestroyOnLoad(gameObject);
}

Finalidade: Garante que exista apenas uma instância de SoundManager no jogo utilizando o Padrão Singleton. Utiliza DontDestroyOnLoad(gameObject) para manter o objeto entre diferentes cenas.

Método PlayEffect

public void PlayEffect(int index)
{
    if (index >= 0 && index < effects.Count)
    {
        source.PlayOneShot(effects[index]);
    }
}

Finalidade: Recebe um inteiro index para identificar qual efeito sonoro será reproduzido a partir da lista effects. Verifica se o index está dentro do intervalo válido da lista effects e reproduz o efeito sonoro especificado utilizando source.PlayOneShot(effects[index]).

Resumo

  • Padrão Singleton: Garante que apenas uma instância de SoundManager exista no jogo, persistindo entre as cenas;
  • Reprodução de Efeitos Sonoros: Utiliza o método PlayEffect para reproduzir efeitos sonoros especificando seu índice na lista effects;
  • Fonte de Áudio: Utiliza um componente AudioSource para tocar os clipes de áudio.

Classe WinPanel

A classe WinPanel fornece funcionalidades para o painel de interface que aparece quando o jogador vence. Inclui métodos para retornar ao menu principal ou reiniciar o nível, cada um reproduzindo um efeito sonoro e carregando a cena apropriada.

Métodos

Método ReturnToMainMenu

public void ReturnToMainMenu()
{
    SoundManager.instance.PlayEffect(0);
    SceneManager.LoadScene(0);
}

Finalidade: Reproduz um efeito sonoro (índice 0) utilizando SoundManager.instance.PlayEffect(0). Carrega a cena do menu principal com o índice de build 0 utilizando SceneManager.LoadScene(0).

Método RestartLevel

public void RestartLevel()
{
    SoundManager.instance.PlayEffect(0);
    SceneManager.LoadScene("Game");
}

Finalidade: Reproduz um efeito sonoro (índice 0) utilizando SoundManager.instance.PlayEffect(0). Carrega a cena do jogo chamada "Game" utilizando SceneManager.LoadScene("Game").

Tudo estava claro?

Como podemos melhorá-lo?

Obrigado pelo seu feedback!

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