What's new

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

Under

Administrator
Unity King Developer

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
Unity King Developer

ScrollMaster 2D Project Documentation​

Table of Contents​

  • Project Overview
  • Namespaces
  • What are Namespaces?
  • Accessing Namespaces
  • Character Configuration
  • CharacterConfig Class
  • SpellConfig Class
  • Creating New ScriptableObjects
  • PlayerController Configuration
  • PlayerController Class
  • Camera Controller Configuration
  • CameraController Class
  • HealthController Configuration
  • HealthController Class
  • HealthBar Class
  • StatsController Configuration
  • StatsController Class

Project Overview​

The ScrollMaster 2D project is a complete foundation for creating 2D side-scrolling games in Unity. It is designed to help developers—from beginners to advanced—quickly get started with their own 2D games.

Namespaces​

What are Namespaces?​

Namespaces are a way of organizing and grouping classes, interfaces, and other types of data in C#. They help prevent name conflicts and keep the code well-structured and easy to maintain.

Accessing Namespaces​

To access a namespace in a script, you must use the using directive at the top of the file. For example, to access the classes within the ScrollMaster2D.Config namespace, you add the following line to the top of your script:
C#:
using ScrollMaster2D.Config;
This ensures access to the entire Config namespace, and the same applies to controllers and managers.

Character Configuration Scriptables​

CharacterConfig Class​

The CharacterConfig class is a ScriptableObject that defines the basic properties and behaviors of a character in the game. Below is the full code for the CharacterConfig class.
Inspector View:

Properties​

Basic Information:
  • characterName: The name of the character.
  • level: The character's level.
Attributes:
  • maxHealth: The character's maximum health.
  • attackPower: The character's attack power.
  • defense: The character's defense.
  • moveSpeed: The character's movement speed.
  • int inventorySlots: Number of inventory slots available.
Abilities:
  • spells: An array of SpellConfig objects defining the character's abilities.
Animation:
  • animatorController: The character's animation controller.

SpellConfig Class​

The SpellConfig class is a ScriptableObject that defines the properties of a magical ability in the game. Below is the full code for the SpellConfig class.
Inspector View:

Properties​

Basic Information:
  • spellName: The name of the magical ability.
  • damage: The damage dealt by the ability.
  • speed: The speed of the ability.
  • hotkey: The shortcut key to cast the ability.
Visual:
  • spellPrefab: Prefab for the visual representation of the ability.
  • spellSprite: Sprite for the visual representation of the ability.
  • usePrefab: Indicates whether to use the prefab or sprite for rendering.
 

Attachments

  • 1720676975506.png
    1720676975506.png
    19.1 KB · Views: 18
  • 1721256360436.png
    1721256360436.png
    23.8 KB · Views: 17
Last edited:

Under

Administrator
Unity King Developer

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
Unity King Developer

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
Unity King Developer

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
Unity King Developer

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
Unity King Developer

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
Unity King Developer
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
Unity King Developer

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
Unity King Developer

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
Unity King Developer

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
Unity King Developer

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
Unity King Developer

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
Unity King Developer

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
Unity King Developer

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
Unity King Developer

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
Unity King Developer

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
Unity King Developer

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