Introdução

Neste tutorial, você aprenderá a desenvolver um jogo interativo simples utilizando a plataforma Unity, focando em esquilos como tema principal. Vamos explorar como integrar animações, física e inteligência artificial (IA) para criar uma experiência envolvente. Utilizaremos C# como linguagem de programação e o framework Zenject para gerenciamento de dependências, o que facilita a organização do código e a testabilidade. Ao final deste tutorial, você terá um jogo funcional que poderá expandir ou modificar como desejar, aprendendo sobre conceitos importantes de desenvolvimento de jogos no processo.

Etapas

  1. Configuração do Ambiente de Desenvolvimento

    Certifique-se de ter o Unity instalado em seu computador. Crie um novo projeto 2D no Unity Hub e configure as opções de projeto de acordo com suas preferências. Certifique-se de que o Visual Studio ou outro editor de código está configurado como seu editor padrão para scripts C#.

    commands
    # Abra o Unity Hub e clique em 'Novo Projeto'.
    # Selecione o template '2D' e nomeie seu projeto como 'SquirrelGame'.
    # Clique em 'Criar' para iniciar o projeto.

  2. Instalando o Zenject

    Zenject é um contêiner de injeção de dependência que facilita a organização do código. Para instalá-lo, você pode baixar o pacote do Zenject pelo Unity Asset Store ou importar diretamente o repositório do GitHub. Após a instalação, você estará pronto para usar o Zenject em seu jogo.

    commands
    # No Unity, vá para Window > Package Manager.
    # Clique em 'Add package from git URL...' e insira 'https://github.com/modesttree/Zenject.git'.
    # Após a instalação, você verá uma nova pasta Zenject em seu projeto.

  3. Criando o Script do Esquilo

    Crie um novo script C# chamado ‘Squirrel’. Esse script vai controlar o comportamento do esquilo no jogo, incluindo suas animações e movimentação. Adicione um Rigidbody2D para integrar a física ao movimento.

    Squirrel.cs
    using UnityEngine;
    
    public class Squirrel : MonoBehaviour {
        private Rigidbody2D rb;
        public float speed = 5f;
    
        void Start() {
            rb = GetComponent<Rigidbody2D>();
        }
    
        void Update() {
            Move();
        }
    
        void Move() {
            float moveX = Input.GetAxis("Horizontal");
            rb.velocity = new Vector2(moveX * speed, rb.velocity.y);
        }
    }

  4. Adicionando Animações

    Para adicionar animações ao esquilo, crie um Animator Controller. Adicione estados de animação que correspondem a ações como ‘Andar’ e ‘Parado’. No script ‘Squirrel’, você precisará conectar o Animator para alterar entre estados com base na movimentação do jogador.

    Squirrel.cs
    // Adicione ao início do arquivo
    using UnityEngine;
    using UnityEngine.Animations;
    
    public class Squirrel : MonoBehaviour {
        [SerializeField] private Animator animator;
    
        void Update() {
            Move();
            Animate();
        }
    
        void Animate() {
            animator.SetFloat("Speed", Mathf.Abs(rb.velocity.x));
        }
    }

  5. Configurando a IA do Esquilo

    Crie um novo script C# chamado ‘SquirrelAI’. Este script será responsável por fazer o esquilo se mover automaticamente em direções aleatórias ao longo do tempo. Integrará a IA básica com um sistema de movimentação.

    SquirrelAI.cs
    using UnityEngine;
    
    public class SquirrelAI : MonoBehaviour {
        private float timer;
        public float movementTime = 2f;
        private Squirrel squirrel;
    
        void Start() {
            squirrel = GetComponent<Squirrel>();
            timer = movementTime;
        }
    
        void Update() {
            timer -= Time.deltaTime;
            if (timer <= 0) {
                squirrel.Move(Random.Range(-1, 1));
                timer = movementTime;
            }
        }
    }

  6. Gerenciamento de Dependências com Zenject

    Crie um novo script chamado ‘GameInstaller’ que irá gerenciar as injeções de dependência no seu jogo, como o Squirrel e a SquirrelAI. Este script configura o Zenject para instanciar objetos automaticamente.

    GameInstaller.cs
    using Zenject;
    
    public class GameInstaller : MonoInstaller {
        public override void InstallBindings() {
            Container.Bind<Squirrel>().FromComponentInHierarchy().AsSingle();
            Container.Bind<SquirrelAI>().FromComponentInHierarchy().AsSingle();
        }
    }

  7. Adicionando a Física ao Jogo

    No Unity, adicione componentes de colisor ao esquilo e assegure-se de que a física está habilitada. Crie um novo GameObject para o chão e aplique um collisor apropriado para interagir com o esquilo.

    commands
    # Selecione o objeto do Esquilo e adicione o componente 'BoxCollider2D'.
    # Crie um novo objeto 2D chamado 'Chao' e adicione 'BoxCollider2D'.
    # Assegure-se de que os objetos possuem Rigidbody2D para interação com a física.

  8. Testando o Jogo

    Agora você pode testar o jogo clicando no botão ‘Play’ no Unity. Observe o comportamento do esquilo e as animações ao se mover. Certifique-se de que não haja erros no console e ajuste os parâmetros conforme necessário.

    commands
    # Clique no botão 'Play' no Unity Editor.
    # Use as setas do teclado para mover o esquilo e veja as animações.
    # Ajuste a velocidade e o tempo de movimentação na classe SquirrelAI, se necessário.

  9. Refinamento e Expansão do Jogo

    Depois de testar o jogo, pense em como você pode expandi-lo. Você pode adicionar novos elementos, como obstáculos, outros personagens, ou habilidades especiais para o esquilo. As experiências e feedback que você coletou até agora serão úteis para melhorar ainda mais sua aplicação.

    commands
    # Pense em novos recursos para adicionar, como novos terrenos ou desafios.
    # Considere implementar um sistema de pontuação ou níveis.

Conclusão

Neste tutorial, você aprendeu a desenvolver um jogo interativo simples com Unity, integrando animações, física e IA utilizando C#. Utilizamos o Zenject para gerenciar dependências, o que ajuda a manter o código limpo e modular. Essa base fornece um ótimo ponto de partida para expandir seus conhecimentos sobre desenvolvimento de jogos, e você pode adicionar novos recursos e melhorar o jogo como preferir. Continue praticando e experimentando para aprofundar suas habilidades na criação de jogos.

Hashtags

#Unity #CSharp #Zenject #DesenvolvimentoDeJogos #InteligenciaArtificial