Jogo desenvolvido durante o trabalho de conclusão de curso de Informática, na plataforma de desenvolvimento Unity utilizando a linguagem de programação C#. O projeto contém menu, seleção de personagem e outros elementos caracteristicos de um fighting game clássico. O projeto continha outros jogos de plataforma e documentação acerca da lógica de programação e de linguagens de programação no desenvolvimento de jogos da época.
Este é um projeto de um jogo de luta 2D multiplayer local desenvolvido na Unity utilizando C#. O sistema conta com mecânicas completas de seleção de personagens e cenários, movimentação física baseada em colisores, suporte a controles (Xbox/Joystick) e teclado, gerenciamento de ciclo de vida de combate (barras de vida) e transição dinâmica entre cenas.
- Multiplayer Local: Suporte nativo para dois jogadores simultâneos no mesmo dispositivo.
- Seleção Expandida: Menus dedicados para a escolha de até 3 personagens diferentes por jogador e 3 arenas distintas.
- Input Híbrido: Configurado para aceitar comandos tanto pelo teclado quanto por controles analógicos (Xbox).
- Mecânica de Combate Inteligente: Detecção de acerto (hitboxes) baseada em triggers 2D, aplicação de dano em tempo real e atualização dinâmica da interface de UI.
- Espelhamento Automático (Flip): Os personagens rotacionam dinamicamente nos eixos para sempre se manterem de frente um para o outro durante a luta.
O projeto está dividido em scripts modulares para facilitar a manutenção e escalabilidade:
menu.cs: Gerencia a tela inicial principal, lidando com a inicialização do jogo através doSceneManagere o fechamento do aplicativo.Menu_selecao.cs: Controla o cursor da tela de seleção de personagens para ambos os jogadores. Bloqueia os inputs após a confirmação e avança de cena assim que ambos estiverem prontos.selecao_cenario.cs: Responsável pela navegação e escolha da arena de combate.
controle.cs: Atua como o GameManager da arena. Utiliza variáveis estáticas dos menus para instanciar (Spawn) os personagens escolhidos em suas respectivas posições e ativar as animações de fundo do cenário correto.barraVida.cs&barraVida2.cs: Controlam de forma independente a escala visual da UI de vida de cada jogador baseado na proporção matemática entre a vida atual e a vida máxima.
Mov_1.cs&Mov_2.cs: Gerenciam a física (Rigidbody2D) e a movimentação dos Players 1 e 2. Controlam os estados doAnimator(correndo, pulando, agachado, parado) e a lógica de inversão dolocalScalebaseada na posição do oponente.Botoes1.cs(e complementares): Mapeia o conjunto de 6 botões de ataque para cada jogador, aciona as animações de ataque e calcula a perda de pontos de vida ao colidir com o trigger do adversário.
O projeto utiliza o sistema de Input clássico da Unity, mapeado da seguinte forma:
| Ação | Player 1 (Teclado/Controle) | Player 2 (Teclado/Controle) |
|---|---|---|
| Movimento Horizontal | Horizontal / Análogo XboxH1 |
Horizontal2 / Análogo XboxH2 |
| Pular / Agachar | Vertical / Análogo XboxV1 |
Vertical2 / Análogo XboxV2 |
| Botões de Ataque | Strings configuráveis (b1 a b6) / Cb1 a Cb6 |
Strings configuráveis (b3 a b4) para UI |
| Reset de Vida (Dev) | Space (Restaura ambas as barras para 100) |
Space |
Para que o projeto funcione perfeitamente, certifique-se de seguir os passos abaixo no Unity Editor:
- Input Manager: Adicione e configure os eixos correspondentes (
XboxH1,XboxV1,XboxH2,XboxV2,Horizontal2,Vertical2) nas configurações de Input do seu projeto (Edit > Project Settings > Input Manager). - Tags: Crie e atribua as seguintes Tags aos respectivos objetos:
chao-> Nos colisores das plataformas/chão.Player1ePlayer2-> Nos respectivos prefabs dos personagens.trigger-> Nos colisores responsáveis pela área de ataque.
- Build Settings: Certifique-se de adicionar as cenas na ordem correta:
Cena 0: Menu Principal (menu.cs)Cena 1: Seleção de Personagem (Menu_selecao.cs)Cena 2: Seleção de Cenário (selecao_cenario.cs)Cena 3: Arena de Combate (controle.cs)
- Variáveis Públicas: No Inspector do script
controle, associe os Prefabs dos seus personagens nos camposF1, F2, S1, S2, T1, T2e defina os locais de spawn empos1epos2.
Este projeto é de código aberto e está disponível para fins de aprendizado e modificação sob a licença MIT.