What's new

2DDevelopment [PT-BR] ScrollMaster 2D Sidescroller Platformer - Sua Base Completa para Unity

Under

Administrator
Staff member

Em Construção.​

ScrollMaster 2D Sidescroller Platformer - Sua Base Completa para Jogos Side-Scrolling na Unity​

Olá, Unity Kings!

Estamos empolgados em apresentar a ScrollMaster 2D, nossa engine exclusiva para criar jogos 2D side-scrolling na Unity.
Este projeto é ideal para desenvolvedores que querem uma base sólida e funcional para construir seus próprios jogos.

O que a ScrollMaster 2D inclui:

Sistemas Base​

  1. Personagem Jogável:
    • Animações de movimento e salto. ✔️
    • Controle responsivo do personagem. ✔️
    • Sistema de vida e pontos. ✔️
  2. Cenário 2D:
    • Tilesets de alta qualidade. ✔️
    • Plataformas interativas ✔️
    • Fundos parallax para profundidade visual.
  3. Física e Colisões:
    • Configurações de física 2D realistas. ✔️
    • Detecção de colisão precisa. ✔️
    • Interações com objetos e inimigos. ✔️
  4. Sistema de Inimigos:
    • IA básica para inimigos. ✔️
    • Animações e comportamentos programados. ✔️
    • Sistema de dano e destruição. ✔️
  5. Elementos de UI:
    • Interface de usuário básica. ✔️
    • Interface de status e inventario basica.
    • Contadores de pontos e vida.
    • Menus de pausa e fim de jogo.
  6. Sistema de Áudio:
    • Sons de efeitos e música de fundo.
    • Sistema de gerenciamento de áudio.
  7. Scripts Básicos:
    • Código em C# bem documentado. ✔️
    • Exemplos de controle de personagem e interações. ✔️
    • Estrutura modular para fácil modificação. ✔️
Como usar a ScrollMaster 2D:
  1. Baixe o Projeto: Link para download do modelo.
  2. Importe para a Unity: Abra o Unity Hub, clique em "Add", e selecione a pasta do projeto baixado.
  3. Explore e Personalize: Navegue pelo projeto, entenda sua estrutura e faça alterações conforme suas necessidades.
  4. Peça Suporte: Se precisar de ajuda, nossa comunidade está aqui para apoiar. Poste suas dúvidas e compartilhe seu progresso!
Por que usar a ScrollMaster 2D?
  • Economize Tempo: Comece com uma base funcional e concentre-se nas partes mais criativas do desenvolvimento.
  • Aprenda com Exemplos: Veja como um jogo 2D side-scrolling é estruturado e desenvolvido.
  • Flexibilidade: Faça quantas alterações quiser para adaptar o jogo à sua visão.
Recursos Adicionais:
  • Documentação Oficial da Engine
Estamos ansiosos para ver o que você vai criar a partir da ScrollMaster 2D.

Compartilhe suas experiências e projetos aqui no fórum!

Você vai aprender como criar um jogo 2D na Unity!

Bons estudos e boas criações!
 
Last edited:

Under

Administrator
Staff member
Documentação em construção.

Documentação do Projeto ScrollMaster 2D​

Sumário​

  1. Visão Geral do Projeto
  2. Namespaces
    • O que são Namespaces?
    • Acessando Namespaces
  3. Configuração de Personagens
    • Classe Base CharacterConfig
    • Classe SpellConfig
    • Criando Novos ScriptableObjects
  4. Configuração de PlayerController
  5. Configuração de Camera Controller
  6. Configuração de HealthController
  7. Configuração de StatsController

Visão Geral do Projeto​

O projeto ScrollMaster 2D é uma base completa para a criação de jogos 2D side-scrolling no Unity. Ele foi desenvolvido para ajudar desenvolvedores, desde iniciantes até os mais experientes, a iniciar rapidamente seus próprios jogos 2D.

Namespaces​

O que são Namespaces?​

Namespaces são uma maneira de organizar e agrupar classes, interfaces, e outros tipos de dados no C#. Eles ajudam a evitar conflitos de nomes e a manter o código bem estruturado e fácil de manter.

Acessando Namespaces​

Para acessar um namespace em um script, você deve usar a diretiva using no início do arquivo. Por exemplo, para acessar as classes dentro do namespace ScrollMaster2D.Config. você adiciona a seguinte linha no topo do seu script:


C#:
using ScrollMaster2D.Config;
Dessa maneira garantindo acesso a todo namespace Config, o mesmo vale para controllers e managers.

Configuração de Scriptables Personagens​


Propriedades​

  • Informações Básicas:
    • characterName: Nome do personagem.
    • level: Nível do personagem.
  • Atributos:
    • maxHealth: Saúde máxima do personagem.
    • attackPower: Poder de ataque do personagem.
    • defense: Defesa do personagem.
    • moveSpeed: Velocidade de movimento do personagem.
    • int inventorySlots: Número de slots no inventário
  • Habilidades:
    • spells: Array de SpellConfig que define as habilidades do personagem.
  • Animação:
    • animatorController: Controlador de animação do personagem.
  • SpellConfig
    A classe SpellConfig é um ScriptableObject que define as propriedades de uma habilidade mágica no jogo.
    Aqui está o código completo da classe SpellConfig.
    Inspector View :
    1720676975506.png

    Propriedades
    • Informações Básicas:
      • spellName: Nome da habilidade mágica.
      • damage: Dano causado pela habilidade.
      • speed: Velocidade da habilidade.
      • hotkey: Tecla de atalho para lançar a habilidade.
    • Visual:
      • spellPrefab: Prefab do visual da habilidade.
      • spellSprite: Sprite do visual da habilidade.
      • usePrefab: Indica se deve usar o prefab ou o sprite para renderização.



 
Last edited:

Under

Administrator
Staff member

Configuração de Controllers Personagens​

PlayerController​

O PlayerController é um script que gerencia o controle do jogador, incluindo movimento, ataques, lançamento de feitiços, a direção do sprite, e animações de pulo, utilizando as configurações definidas no CharacterConfig. As teclas de controle, parâmetros do Animator e tags de colisão podem ser configurados diretamente no Unity Editor.

Classe PlayerController

A classe PlayerController é responsável por controlar o movimento, ataque e lançamento de habilidades do personagem jogador, bem como garantir que o sprite vire corretamente com base na direção do movimento e execute animações de pulo e ataque com espada.
Aqui está o código completo da classe PlayerController.
Inspector View:
1721332238891.png

Propriedades e Métodos​

  • Propriedades:
    • characterConfig: Referência ao CharacterConfig utilizado pelo personagem jogador.
    • jumpForce: Força do pulo do personagem.
    • attackCooldown: Tempo de recarga entre ataques.
    • currentSpeed: Velocidade atual do personagem.
    • currentAnimation: Animação atual do personagem.
    • moveLeftKey: Tecla para mover o personagem para a esquerda.
    • moveRightKey: Tecla para mover o personagem para a direita.
    • jumpKey: Tecla para fazer o personagem pular.
    • attackKey: Tecla para fazer o personagem atacar.
    • groundTag: Tag para identificar o chão.
    • enemyTag: Tag para identificar inimigos.
    • speedParameter: Parâmetro de velocidade no Animator.
    • jumpParameter: Parâmetro de pulo no Animator.
    • attackParameter: Parâmetro de ataque no Animator.
    • swordAttackParameter: Parâmetro de ataque com espada no Animator.
    • animatorController: Controlador do Animator do personagem.
    • rb: Componente Rigidbody2D do personagem.
    • healthController: Componente responsável pelo controle da saúde.
    • statsController: Componente responsável pelo controle dos atributos.
    • nextAttackTime: Tempo em que o próximo ataque estará disponível.
    • isGrounded: Indica se o personagem está no chão.
    • isFacingRight: Indica se o personagem está virado para a direita.
    • expController: Componente responsável pelo controle da experiência e nível do personagem.
  • Métodos:
    • Start(): Inicializa o personagem utilizando as configurações definidas em characterConfig.
    • Update(): Atualiza os métodos de movimento, ataques, habilidades e animações a cada frame.
    • InitializeCharacter(): Inicializa os componentes Animator, Rigidbody2D, HealthController e StatsController do personagem.
    • HandleMovement(): Gerencia o movimento do personagem baseado nas entradas do usuário, incluindo a lógica para virar o sprite e pular.
    • Flip(): Inverte o eixo X do Transform.localScale para virar o sprite do personagem.
    • HandleAttacks(): Gerencia os ataques do personagem baseado nas entradas do usuário.
    • HandleSpells(): Verifica e gerencia o lançamento de habilidades baseadas nas teclas de atalho configuradas.
    • CastSpell(Spell spell): Executa a habilidade definida em SpellConfig.
    • UpdateAnimator(): Atualiza a animação atual do personagem.
    • OnCollisionEnter2D(Collision2D collision): Verifica se o personagem colidiu com o chão e atualiza o estado de pulo.
    • OnCollisionExit2D(Collision2D collision): Verifica se o personagem deixou de colidir com o chão.
    • InitializeCharacter(): Adicionada a inicialização do ExpController:
 
Last edited:

Under

Administrator
Staff member

CameraController​

O CameraController é um script que gerencia a câmera para seguir o jogador de maneira suave, mantendo um offset constante e evitando rotações indesejadas.

Classe CameraController​

A classe CameraController é responsável por fazer a câmera seguir o personagem do jogador sem girar junto com ele.
Aqui está o código completo da classe CameraController.
Inspector View:
1720799397761.png

Propriedades e Métodos​

  • Propriedades:
    • playerTransform: Referência à Transform do player.
    • offset: Offset da câmera em relação ao player.
    • smoothSpeed: Velocidade de suavização do movimento da câmera.
  • Métodos:
    • FixedUpdate(): Atualiza a posição da câmera de forma suave para seguir o player, mantendo o offset e evitando rotações indesejadas.
 
Last edited:

Under

Administrator
Staff member

HealthController​

O HealthController é um script que gerencia a saúde do jogador, utilizando as configurações definidas no CharacterConfig.
Ele também atualiza a saúde máxima com base no nível do personagem e integra-se com a HealthBar.

Classe HealthController​

A classe HealthController é responsável por gerenciar a saúde do personagem jogador. Aqui está
Aqui está o código completo da classe HealthController.
Inspector View:
1720800030573.png
  • Propriedades:
    • characterConfig: Referência ao CharacterConfig utilizado pelo personagem jogador.
    • healthBar: Referência à HealthBar para atualizar a barra de saúde.
    • baseMaxHealth: Saúde máxima base do personagem.
    • healthPerLevel: Incremento de saúde por nível.
    • currentHealth: Saúde atual do personagem.
    • maxHealth: Saúde máxima atualizada com base no nível do personagem.
  • Métodos:
    • Initialize(Character config): Inicializa o HealthController com a configuração do personagem.
    • UpdateHealth(): Atualiza a saúde máxima com base no nível do personagem.
    • TakeDamage(float damage): Aplica dano ao personagem, atualiza a barra de saúde e verifica se o personagem morreu.
    • Heal(float amount): Cura o personagem, garantindo que a saúde não exceda a saúde máxima e atualiza a barra de saúde.
    • Die(): Lida com a lógica de morte do personagem.

HealthBar​

O HealthBar é um script que gerencia a interface da barra de saúde, permitindo a atualização visual da saúde do personagem.

Classe HealthBar​

A classe HealthBar é responsável por atualizar a interface da barra de saúde com base na saúde atual do personagem.
Aqui está o código completo da classe HealthBar.
Inspector View:
1720806530995.png

Propriedades e Métodos​

  • Propriedades:
    • slider: Referência ao componente Slider da barra de saúde.
  • Métodos:
    • SetHealth(float health): Atualiza o valor atual da barra de saúde.
    • SetMaxHealth(float health): Define o valor máximo da barra de saúde e a ajusta para o valor atual.
 
Last edited:

Under

Administrator
Staff member

StatsController​

O StatsController é um script que gerencia o attackPower e a defense do personagem, utilizando as configurações definidas no CharacterConfig.

Classe StatsController​

A classe StatsController é responsável por gerenciar os atributos de ataque e defesa do personagem jogador.
Aqui está o código completo da classe StatsController.
Inspector View:
1720800069051.png

Propriedades e Métodos​

  • Propriedades:
    • characterConfig: Referência ao CharacterConfig utilizado pelo personagem jogador.
    • AttackPower: Poder de ataque do personagem.
    • Defense: Defesa do personagem.
  • Métodos:
    • Initialize(CharacterConfig config): Inicializa o StatsController com a configuração do personagem.
    • IncreaseAttackPower(float amount): Aumenta o poder de ataque.
    • DecreaseAttackPower(float amount): Diminui o poder de ataque.
    • IncreaseDefense(float amount): Aumenta a defesa.
    • DecreaseDefense(float amount): Diminui a defesa.
 

Under

Administrator
Staff member

AnimatorController​

O AnimatorController é um script que gerencia o Animator do personagem, utilizando as configurações definidas no CharacterConfig.

Classe AnimatorController​

A classe AnimatorCharacter é responsável por configurar e controlar o Animator do personagem jogador.
Aqui está o código completo da classe AnimatorController.

Propriedades e Métodos​

  • Propriedades:
    • animator: Componente Animator do personagem.
    • characterConfig: Referência ao CharacterConfig utilizado pelo personagem jogador.
  • Métodos:
    • Initialize(CharacterConfig config): Inicializa o AnimatorController com a configuração do personagem.
    • SetFloat(string parameterName, float value): Define um parâmetro float no Animator.
    • SetTrigger(string parameterName): Define um parâmetro trigger no Animator.
 

Under

Administrator
Staff member
ExpController

O ExpController gerencia a experiência e o nível do personagem, garantindo que os atributos sejam atualizados conforme o personagem sobe de nível.
Aqui está o código completo da classe ExpController.
Inspector View:
1721005072482.png
Propriedades:
  • characterConfig: Referência ao CharacterConfig utilizado pelo personagem.
  • currentExp: Experiência atual do personagem.
  • expToNextLevel: Experiência necessária para o próximo nível.
  • expMultiplier: Multiplicador para calcular a experiência necessária para os próximos níveis.
Métodos:
  • Start(): Inicializa o controlador de experiência.
  • InitializeExp(): Inicializa os valores de experiência.
  • AddExperience(int amount): Adiciona experiência ao personagem e verifica se é necessário subir de nível.
  • LevelUp(): Executa a lógica para subir de nível, atualizando os atributos do personagem.
  • CalculateExpToNextLevel(int level): Calcula a experiência necessária para o próximo nível.

ExpBar​

O ExpBar é um script que gerencia a barra de experiência do jogador, atualizando-a conforme o jogador ganha experiência e sobe de nível.
Inspector View :
1721005129593.png

Propriedades:
  • slider: Componente Slider da barra de experiência.
Métodos:
  • SetExp(float exp): Define a experiência atual na barra.
  • SetMaxExp(float exp): Define a experiência máxima necessária para o próximo nível na barra.
 

Under

Administrator
Staff member

ProceduralGeneration - TerrainController​

O TerrainController é um script que gerencia a geração dinâmica de terreno, árvores e inimigos em um Tilemap. Ele utiliza configurações definidas em ScriptableObjects (LandscapeConfig) para criar biomas variados e interessantes. Este script permite configurar parâmetros diretamente no Unity Editor, oferecendo flexibilidade na criação do terreno e posicionamento de árvores e inimigos e minérios.

Classe TerrainController​

A classe TerrainController é responsável por gerar tiles de terreno, árvores e inimigos em um Tilemap de forma dinâmica, permitindo criar ambientes variados com biomas, áreas elevadas e zonas designadas para inimigos.
Código Disponível Aqui.
Inspector View:
1721331108460.png

Propriedades:​

  • grassTilemap: Referência ao Tilemap para os tiles de grama.
  • rockTilemap: Referência ao Tilemap para os tiles de rocha.
  • dirtTilemap: Referência ao Tilemap para os tiles de terra.
  • oreTilemap: Referência ao Tilemap para os tiles de minério.
  • landscapeConfig: Referência ao LandscapeConfig usado para a geração do terreno.
  • treesParent: Transform pai para os objetos de árvore.
  • enemiesParent: Transform pai para os objetos de inimigos.

Métodos:​

  • Start(): Inicializa os colliders e regenera o terreno.
  • EnsureColliders(): Garante que cada Tilemap tenha um TilemapCollider2D e um Rigidbody2D.
  • EnsureCollider(Tilemap tilemap): Adiciona um TilemapCollider2D e Rigidbody2D ao Tilemap especificado, se ainda não existirem.
  • RegenerateTerrain(): Limpa os objetos existentes e gera o terreno e as árvores.
  • ClearExistingObjects(): Limpa todos os tiles e objetos filhos dos Tilemaps e pais.
  • ClearChildren(Transform parent): Destroi todos os objetos filhos do Transform pai especificado.
  • GenerateTerrainAndTrees(): Itera através dos biomas no LandscapeConfig e gera o terreno, terra, minérios e árvores.
  • GenerateColumn(int x, int finalHeight, LandscapeConfig.Biome biome): Gera uma coluna de tiles para o bioma especificado.
  • GenerateDirt(int x, int finalHeight, LandscapeConfig.Biome biome): Gera tiles de terra com base na configuração de terra.
  • GetTilemapToUse(TileBase tile, LandscapeConfig.Biome biome): Determina qual Tilemap usar com base no tipo de tile.
  • GetTileToPlace(int x, int y, int finalHeight, LandscapeConfig.Biome biome): Determina qual tile colocar com base na posição e nas configurações do bioma.
  • IsPlayerSpace(int x, int y, LandscapeConfig.Biome biome): Determina se um espaço deve ser deixado para o jogador passar.
  • GenerateTrees(int x, int terrainHeight, LandscapeConfig.Biome biome): Gera árvores na posição especificada com base nas configurações de árvore.
  • GenerateEnemies(int x, int terrainHeight, LandscapeConfig.EnemyConfig enemyConfig): Gera inimigos na posição especificada com base na configuração de inimigos.
  • GenerateOres(int x, int finalHeight, LandscapeConfig.Biome biome): Gera tiles de minério com base nas configurações de minério.
  • IsDirtArea(int x, LandscapeConfig.Biome biome): Determina se uma área deve ser uma área de terra com base na configuração de terra.

LandscapeConfig​

O LandscapeConfig é um ScriptableObject utilizado para definir as configurações de paisagens em um jogo 2D. Ele permite a configuração de biomas, incluindo a geração de terrenos, árvores, cavernas e áreas inimigas. Cada bioma possui suas próprias configurações específicas para criar um ambiente variado e interessante.
Código Disponivel Aqui
1721269172686.png1721269186536.png

Classe LandscapeConfig​

A classe LandscapeConfig é responsável por armazenar as configurações dos biomas, incluindo a configuração de árvores, cavernas e áreas inimigas. Ela é usada pelo TerrainController para gerar o terreno e seus componentes dinamicamente.

Propriedades:​

  • biomes: Um array de biomas, cada um contendo configurações para grama, rocha, terra, minérios, árvores e inimigos.

Estruturas Aninhadas:​

  • Biome: Define as propriedades de um bioma, incluindo tilemaps, tiles, amplitudes e configurações para cavernas, terra e minérios.
    • name: O nome do bioma.
    • biomeWidth: A largura do bioma.
    • biomeHeight: A altura do bioma.
    • grassTilemapName: O nome do Tilemap para os tiles de grama.
    • grassTile: O TileBase para os tiles de grama.
    • grassAmplitude: A amplitude para a variação de altura da grama.
    • mountainFrequency: A frequência das montanhas.
    • rockTilemapName: O nome do Tilemap para os tiles de rocha.
    • rockTile: O TileBase para os tiles de rocha.
    • caveConfig: Configuração para as cavernas.
    • dirtTilemapName: O nome do Tilemap para os tiles de terra.
    • dirtTile: O TileBase para os tiles de terra.
    • dirtConfig: Configuração para as áreas de terra.
    • oreTilemapName: O nome do Tilemap para os tiles de minério.
    • oreConfigs: Um array de configurações para diferentes tipos de minérios.
    • treeConfigs: Um array de configurações para o spawn de árvores.
  • TreeSpawnConfig: Define as propriedades para o spawn de árvores.
    • treeConfig: Referência ao TreeConfig.
    • spawnFrequency: A frequência de spawn das árvores.
  • CaveConfig: Define as propriedades para a geração de cavernas.
    • caveFrequency: A frequência do ruído das cavernas.
    • caveThreshold: O limiar para determinar os tiles de caverna.
    • enablePlayerSpaces: Ativar espaços para o jogador passar.
    • playerSpaceRange: O intervalo de largura dos espaços para o jogador.
  • DirtConfig: Define as propriedades para a geração de terra.
    • spawnChance: A chance de spawn de tiles de terra.
    • dirtFrequency: A frequência do ruído da terra.
    • dirtDepth: A profundidade dos tiles de terra.
    • dirtRadius: O raio das áreas de terra.
    • enemyConfig: Configuração para os inimigos nas áreas de terra.
    • enemySpawnFrequency: A frequência de spawn dos inimigos.
    • enemySpawnRange: O intervalo para o spawn dos inimigos.
  • OreConfig: Define as propriedades para a geração de minérios.
    • oreTile: O TileBase para os tiles de minério.
    • spawnChance: A chance de spawn dos tiles de minério.
    • oreFrequency: A frequência do ruído dos minérios.
    • oreDepth: A profundidade em que os minérios podem spawnar.
  • EnemyConfig: Define as propriedades para a geração de inimigos.
    • enemyPrefab: O prefab para o inimigo.
    • spawnChance: A chance de spawn dos inimigos.
    • maxQuantity: A quantidade máxima de inimigos que podem spawnar.
    • enemySpawnOffset: O deslocamento para as posições de spawn dos inimigos.
Grass,Dirty,Rocks
Exemplos : 250x250 Tiles
1721256714180.png
Exemplo : 25x25 Tiles
1721256746528.png

Outros Layouts com Cavernas. (Em desenvolvimento)
1721284101295.png
Agora Cada RuleTile segue o seu Tile Map de forma procedural.

1721285422823.png
Version 2 :
Agora muito mais suave e com a possibilidade de Adicionar Spawn de minerios.
1000x100 Biome (Green Mountains)
1721361132134.png
1721361151920.png
1721361291326.png
 
Last edited:

Under

Administrator
Staff member

InventoryController​

O InventoryController é um script que gerencia o inventário do personagem, permitindo adicionar, consultar e exibir itens. Ele usa um dicionário para rastrear a quantidade de cada item no inventário.

Classe InventoryController​

A classe InventoryController é responsável por adicionar e consultar itens no inventário, bem como exibir o inventário agrupado por categorias.
Código Disponivel Aqui.
Inspector View:
1721096127372.png

Propriedades​

  • Character characterConfig: Configuração do personagem, definida através de um ScriptableObject.
  • Dictionary<string, int> itemCounts: Dicionário para rastrear a quantidade de cada item no inventário.

Métodos​

  • void AddItem(string itemName, int amount): Adiciona uma quantidade específica de um item ao inventário.
  • int GetItemCount(string itemName): Retorna a quantidade de um item específico no inventário.
  • void ShowInventory(): Exibe o inventário agrupado por categorias no console.
 
Last edited:

Under

Administrator
Staff member

ItemPickUpController​

O ItemPickUpController é um script que gerencia a coleta de itens pelo jogador. Quando o jogador colide com o item, este é adicionado ao inventário.

Classe ItemPickUpController​

A classe ItemPickUpController é responsável por detectar a colisão do jogador com itens e adicionar esses itens ao inventário do jogador.
Código Disponível Aqui.

Propriedades​

  • ItemConfig itemConfig: Configuração do item, definida através de um ScriptableObject.

Métodos​

  • void OnTriggerEnter2D(Collider2D other): Detecta a colisão do jogador com o item e adiciona o item ao inventário.
 
Last edited:

Under

Administrator
Staff member

TreeController​

O TreeController é um script que gerencia a interação do jogador com árvores, permitindo coletar recursos como madeira e gravetos.

Classe TreeController​

A classe TreeController é responsável por permitir que o jogador interaja com árvores para coletar recursos, aplicando efeitos visuais e gerenciando a vida útil das árvores.
Código Disponível Aqui.
Inspector View:
1721256924951.png

Propriedades​

  • TreeConfig treeConfig: Configuração da árvore, definida através de um ScriptableObject.
  • KeyCode collectKey: Tecla para coletar recursos.
  • float interactionRange: Alcance de interação configurável.
  • float bounceDuration: Duração do efeito de bounce.
  • float bounceScale: Escala do efeito de bounce.
  • int currentHealth: Vida atual da árvore.
  • Transform playerTransform: Transform do jogador para verificar a proximidade.
  • GameObject collectButton: Botão de coleta na UI.
  • Vector3 originalScale: Escala original da árvore para efeitos de bounce.

Métodos​

  • void Start(): Inicializa as configurações e localiza o jogador e o botão de coleta.
  • void Update(): Verifica a distância do jogador e gerencia a visibilidade do botão de coleta e a interação.
  • void CollectResources(): Coleta recursos e aplica efeitos visuais.
  • IEnumerator BounceTree(): Aplica um efeito de bounce na árvore.
  • void DropResources(): Gera os recursos coletados pela árvore.
  • void DropItem(ItemConfig itemConfig, int totalAmount): Gera instâncias dos itens coletados.
  • void OnDrawGizmosSelected(): Desenha um Gizmo no Editor para visualizar o alcance de interação.
 
Last edited:

Under

Administrator
Staff member

TreeConfig​

A classe TreeConfig é um ScriptableObject usado para configurar as propriedades das árvores, incluindo os itens que podem ser coletados e a vida útil da árvore.
Código Disponível Aqui.
Inspector View:
1721257017044.png

Propriedades​

  • GameObject treePrefab: Prefab da árvore.
  • float heightOffset: Offset vertical da árvore em relação ao terreno.
  • float topColliderOffset: Offset adicional para ajustar a posição da árvore em relação ao colisor do terreno.
  • int treeHealth: Vida útil da árvore.
  • ItemConfig woodItem: Configuração do item de madeira.
  • ItemConfig stickItem: Configuração do item de graveto.
  • int woodAmount: Quantidade de madeira que a árvore pode fornecer.
  • int stickAmount: Quantidade de gravetos que a árvore pode fornecer.
 
Last edited:

Under

Administrator
Staff member

ItemConfig​

A classe ItemConfig é um ScriptableObject usado para configurar as propriedades dos itens no jogo.
Código Completo Aqui

Inspector View :
1721258021167.png

Propriedades​

  • string itemName: Nome do item.
  • GameObject itemPrefab: Prefab do item.
  • int quantity: Quantidade do item.
  • ItemCategory category: Categoria do item.
 
Last edited:

Under

Administrator
Staff member

EnemyHealthController​

O EnemyHealthController é um script que gerencia a saúde de um inimigo no jogo. Ele controla a quantidade de dano que o inimigo pode receber e atualiza a barra de saúde na UI. Quando a saúde do inimigo chega a zero, ele morre e concede experiência ao jogador.

Classe EnemyHealthController​

A classe EnemyHealthController é responsável por gerenciar a saúde do inimigo, aplicar dano e destruir o inimigo quando sua saúde chega a zero.

Código Disponível Aqui.

Inspector View:
1721257598269.png

Propriedades​

  • int maxHealth: Saúde máxima do inimigo.
  • int currentHealth: Saúde atual do inimigo.
  • Slider healthBarSlider: Referência ao Slider da barra de saúde na UI.
  • EnemyConfig enemyConfig: Configuração do inimigo, definida através de um ScriptableObject.
  • EnemyExpController expController: Controlador de experiência do inimigo, responsável por conceder EXP ao jogador.

Métodos​

  • void Start(): Inicializa a saúde e configura a barra de saúde.
  • void TakeDamage(int damage): Aplica dano ao inimigo e verifica se ele deve morrer.
  • void Die(): Lida com a morte do inimigo, concedendo EXP ao jogador e destruindo o game object.
  • void Initialize(int initialHealth): Inicializa a saúde do inimigo com um valor específico.
  • void UpdateHealthBar(): Atualiza a barra de saúde na UI.
 
Last edited:

Under

Administrator
Staff member

EnemyController​

O EnemyController é um script que gerencia o comportamento do inimigo, incluindo movimento e ataques. Ele segue o jogador e ataca quando está dentro do alcance.

Classe EnemyController​

A classe EnemyController é responsável por controlar o movimento, ataque e animação do inimigo.
Código Disponivel Aqui.
Inspector View:

1721257720832.png

Propriedades​

  • EnemyConfig enemyConfig: Configuração do inimigo, definida através de um ScriptableObject.
  • Transform player: Referência ao transform do jogador.
  • float attackRange: Alcance do ataque do inimigo.
  • float attackCooldown: Tempo de recarga entre ataques.
  • float currentSpeed: Velocidade atual do inimigo.
  • string currentAnimation: Animação atual do inimigo.

Métodos​

  • void Start(): Inicializa o inimigo e configura as referências necessárias.
  • void Update(): Atualiza o movimento e ataques do inimigo a cada frame.
  • void InitializeEnemy(): Configura o inimigo com base nas configurações definidas.
  • void HandleMovement(): Gerencia o movimento do inimigo em direção ao jogador.
  • void Flip(): Inverte a direção do sprite do inimigo.
  • void HandleAttacks(): Gerencia os ataques do inimigo.
  • void DealDamage(): Aplica dano ao jogador, chamado por um evento de animação.
  • void LogCurrentAnimation(): Registra a animação atual para depuração.
  • void TakeDamage(int damage): Aplica dano ao inimigo.
 
Last edited:

Under

Administrator
Staff member

EnemyExpController​

O EnemyExpController é um script que gerencia a concessão de experiência ao jogador quando o inimigo morre.

Classe EnemyExpController​

A classe EnemyExpController é responsável por conceder experiência ao jogador quando o inimigo morre.
Código disponivel aqui.
Inspector View:
1721258134049.png

Propriedades​

  • EnemyConfig enemyConfig: Configuração do inimigo, definida através de um ScriptableObject.

Métodos​

  • void GiveExpToPlayer(): Concede experiência ao jogador quando o inimigo morre.
 
Last edited:

Under

Administrator
Staff member

EnemyConfig​

O EnemyConfig é um ScriptableObject utilizado para definir as configurações dos inimigos em um jogo 2D. Ele permite a configuração de parâmetros básicos, comportamentos de combate, habilidades especiais, movimentação e itens de loot. Cada inimigo pode ser configurado individualmente para criar uma experiência de jogo diversificada.

Classe EnemyConfig​

A classe EnemyConfig é responsável por armazenar todas as informações e configurações necessárias para definir o comportamento e atributos de um inimigo. Estas configurações incluem parâmetros de combate, movimento, habilidades e loot.

1721258243948.png

Propriedades​

Basic Info​

  • string enemyName: Nome do inimigo.
  • float moveSpeed: Velocidade de movimento do inimigo.
  • int attackDamage: Dano causado pelo ataque do inimigo.
  • int maxHealth: Saúde máxima do inimigo.
  • int expValue: Valor de experiência que o inimigo concede ao ser derrotado.
  • CombatType combatType: Tipo de combate do inimigo (Passive ou Aggressive).

Ranges​

  • float followRange: Alcance de perseguição do jogador.
  • float detectionRange: Alcance de detecção do jogador.
  • float attackRange: Alcance de ataque do jogador.

Attack Config​

  • float attackCooldown: Tempo de recarga entre ataques.
  • float specialAttackChance: Chance de realizar um ataque especial.
  • string attackAnimationName: Nome da animação de ataque.

Spell Config​

  • float spellEffectRange: Alcance do efeito do feitiço.

Movement​

  • float jumpForce: Força do pulo do inimigo.

Teleport Config​

  • float teleportAnimationThreshold: Percentual da animação de ataque antes de teleportar (0-1).

Loot Config​

  • LootItem[] lootItems: Itens de loot configuráveis.

LootItem​

  • ItemConfig itemConfig: Configuração do item de loot.
  • float dropChance: Chance de drop do item (0 = 0%, 1 = 100%).
  • int minQuantity: Quantidade mínima do item.
  • int maxQuantity: Quantidade máxima do item.
 
Last edited:

Top