Conteúdo do Curso
Jogo de Luta no Unity
Jogo de Luta no Unity
Explique o Código
Código do Jogador
Inicialização no Método Start
private void Start()
{
startPosition = transform.position;
}
Propósito: Armazena a posição inicial do jogador quando o jogo começa.
Reiniciando a Posição do Jogador
public void RestartPlayerPosition()
{
transform.position = startPosition;
rb.velocity = Vector2.zero;
}
Propósito: Reseta a posição do jogador para a posição inicial e para qualquer movimento definindo a velocidade para zero.
Manipulando a 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;
}
Propósito: Captura a entrada do jogador (tecla espaço) para fazer o jogador "pular" definindo a velocidade y para 6, enquanto move constantemente o jogador para a direita definindo a velocidade x para 4.
Manipulação de Colisões
OnCollisionEnter2D
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.collider.tag == "ground")
{
RestartPlayerPosition();
}
}
Propósito: Reseta 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);
}
}
Propósito: Ativa o painel de vitória e toca um efeito sonoro quando o jogador colide com objetos marcados como "win".
Resumo
- Movimento: O jogador se move continuamente para a direita e pula quando a tecla de espaço é pressionada;
- Reiniciar: A posição do jogador é resetada ao colidir com o chão;
- Vitória: Exibe um painel de vitória e toca 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);
}
Propósito:
Garante que haja apenas uma instância de SoundManager
no jogo usando o Padrão Singleton. Usa DontDestroyOnLoad(gameObject)
para persistir entre diferentes cenas.
Método PlayEffect
public void PlayEffect(int index)
{
if (index >= 0 && index < effects.Count)
{
source.PlayOneShot(effects[index]);
}
}
Propósito:
Recebe um inteiro index
para identificar qual efeito sonoro tocar da lista effects
. Verifica se o index
está dentro do intervalo válido da lista effects
e toca o efeito sonoro especificado usando source.PlayOneShot(effects[index])
.
Resumo
- Padrão Singleton: Garante que apenas uma instância de
SoundManager
exista no jogo, persistindo entre cenas; - Reproduzindo Efeitos Sonoros: Usa o método
PlayEffect
para reproduzir efeitos sonoros especificando seu índice na lista deeffects
; - Fonte de Áudio: Utiliza um componente
AudioSource
para reproduzir os clipes de áudio.
Classe WinPanel
A classe WinPanel
fornece funcionalidade para o painel de UI 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);
}
Propósito:
Reproduz um efeito sonoro (índice 0) usando SoundManager.instance.PlayEffect(0)
. Carrega a cena do menu principal com índice de construção 0 usando SceneManager.LoadScene(0)
.
Método RestartLevel
public void RestartLevel()
{
SoundManager.instance.PlayEffect(0);
SceneManager.LoadScene("Game");
}
Propósito:
Reproduz um efeito sonoro (índice 0) usando SoundManager.instance.PlayEffect(0)
. Carrega a cena do jogo chamada "Game" usando SceneManager.LoadScene("Game")
.
Obrigado pelo seu feedback!