What's new

2DDevelopment Sistema avançado para Controle de Personagem 2D-SideScrolling Unity [Scroll2D-Master]

Under

Administrator
Staff member

Configuração de Scriptables Personagens​


Compativel com outros arquivos do [Scroll2D-Master]​


CharacterConfig​

A classe CharacterConfig é um ScriptableObject que define as propriedades e comportamentos básicos de um personagem no jogo.

Código Completo da Classe CharacterConfig

1721332466751.png
  • 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.
    • 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.

Código Completo da Classe SpellConfig

1721332354391.png

  • 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.

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.

Código Completo da Classe PlayerController

1721332202273.png


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(SpellConfig 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.

Configuração do PlayerController​

Passo a Passo​

  1. Adicione o Script ao Objeto do Player:
    • No Unity Editor, selecione o objeto do player na hierarquia.
    • Arraste o script PlayerController para o inspetor do objeto do player.
  2. Configure as Propriedades no Inspetor:
    • Defina as propriedades no inspetor, incluindo characterConfig, jumpForce, attackCooldown, teclas de movimento (moveLeftKey, moveRightKey, jumpKey, attackKey), tags (groundTag, enemyTag), parâmetros do Animator (speedParameter, jumpParameter, attackParameter, swordAttackParameter), e o AnimatorController.
  3. Inicialize os Componentes:
    • Certifique-se de que os componentes Rigidbody2D, Animator, HealthController, StatsController, e ExpController estejam adicionados ao objeto do player.
  4. Criação de Novos ScriptableObjects:
    • Para criar novos personagens e habilidades usando as classes CharacterConfig e SpellConfig, siga os passos abaixo:

Criação de Novos ScriptableObjects​

  1. No Unity Editor, clique com o botão direito na janela Project.
  2. Para criar uma nova configuração de personagem, selecione Create > Configs > Character > New.
    • Renomeie o ScriptableObject conforme o tipo de personagem, por exemplo, Warrior, Mage, etc.
  3. Para criar uma nova configuração de habilidade, selecione Create > Configs > Spell > New.
    • Renomeie o ScriptableObject conforme o tipo de habilidade, por exemplo, Fireball, IceBlast, etc.

Configuração dos Novos ScriptableObjects​

  1. No Inspector, defina as propriedades dos novos ScriptableObjects de personagem e habilidades.
  2. Para os personagens, defina Nome do Personagem, Nível, Saúde Máxima, Poder de Ataque, Defesa, Velocidade de Movimento, Animação e adicione as habilidades criadas no array spells.
  3. Para as habilidades, defina Nome da Habilidade, Dano, Velocidade, Prefab da Habilidade, Sprite da Habilidade, Tecla de Atalho e se deve usar o prefab (usePrefab).

View attachment 2024-07-18 17-05-15.mp4
 
Last edited:

Under

Administrator
Staff member

Configuring Character Scriptables​

Works with other script related to [Scroll2D-Master]​

CharacterConfig​

The CharacterConfig class is a ScriptableObject that defines the basic properties and behaviors of a character in the game.

Complete CharacterConfig Class

1721333739584.png


Basic Information:

  • characterName: Character's name.
  • level: Character's level.
Attributes:

  • maxHealth: Character's maximum health.
  • attackPower: Character's attack power.
  • defense: Character's defense.
  • moveSpeed: Character's movement speed.
  • inventorySlots: Number of inventory slots.
Abilities:

  • spells: Array of SpellConfig that defines the character's abilities.
Animation:

  • animatorController: Character's animation controller.

SpellConfig​

The SpellConfig class is a ScriptableObject that defines the properties of a magical ability in the game.

Complete SpellConfig Class

1721333761563.png


Basic Information:

  • spellName: Name of the magical ability.
  • damage: Damage caused by the ability.
  • speed: Speed of the ability.
  • hotkey: Hotkey to cast the ability.
Visual:

  • spellPrefab: Prefab of the ability's visual.
  • spellSprite: Sprite of the ability's visual.
  • usePrefab: Indicates whether to use the prefab or the sprite for rendering.

PlayerController​

The PlayerController is a script that manages player control, including movement, attacks, casting spells, sprite direction, and jump animations, using the configurations defined in CharacterConfig. Control keys, Animator parameters, and collision tags can be configured directly in the Unity Editor.

Complete PlayerController Class

1721333809257.png

Properties:

  • characterConfig: Reference to the CharacterConfig used by the player character.
  • jumpForce: Character's jump force.
  • attackCooldown: Cooldown time between attacks.
  • currentSpeed: Current speed of the character.
  • currentAnimation: Current animation of the character.
  • moveLeftKey: Key to move the character to the left.
  • moveRightKey: Key to move the character to the right.
  • jumpKey: Key to make the character jump.
  • attackKey: Key to make the character attack.
  • groundTag: Tag to identify the ground.
  • enemyTag: Tag to identify enemies.
  • speedParameter: Speed parameter in the Animator.
  • jumpParameter: Jump parameter in the Animator.
  • attackParameter: Attack parameter in the Animator.
  • swordAttackParameter: Sword attack parameter in the Animator.
  • animatorController: Character's Animator controller.
  • rb: Character's Rigidbody2D component.
  • healthController: Component responsible for health management.
  • statsController: Component responsible for attribute management.
  • nextAttackTime: Time when the next attack will be available.
  • isGrounded: Indicates if the character is on the ground.
  • isFacingRight: Indicates if the character is facing right.
  • expController: Component responsible for experience and level management.
Methods:

  • Start(): Initializes the character using the settings defined in characterConfig.
  • Update(): Updates movement, attacks, abilities, and animations methods each frame.
  • InitializeCharacter(): Initializes the character's Animator, Rigidbody2D, HealthController, and StatsController components.
  • HandleMovement(): Manages the character's movement based on user inputs, including logic for sprite flipping and jumping.
  • Flip(): Flips the character's sprite by inverting the X-axis of Transform.localScale.
  • HandleAttacks(): Manages the character's attacks based on user inputs.
  • HandleSpells(): Checks and manages casting abilities based on configured hotkeys.
  • CastSpell(SpellConfig spell): Executes the ability defined in SpellConfig.
  • UpdateAnimator(): Updates the character's current animation.
  • OnCollisionEnter2D(Collision2D collision): Checks if the character collided with the ground and updates the jump state.
  • OnCollisionExit2D(Collision2D collision): Checks if the character stopped colliding with the ground.


Configuring PlayerController​

Step-by-Step​

  1. Add the Script to the Player Object:
    • In the Unity Editor, select the player object in the hierarchy.
    • Drag the PlayerController script to the player's inspector.
  2. Configure the Properties in the Inspector:
    • Define the properties in the inspector, including characterConfig, jumpForce, attackCooldown, movement keys (moveLeftKey, moveRightKey, jumpKey, attackKey), tags (groundTag, enemyTag), Animator parameters (speedParameter, jumpParameter, attackParameter, swordAttackParameter), and the AnimatorController.
  3. Initialize the Components:
    • Ensure that the Rigidbody2D, Animator, HealthController, StatsController, and ExpController components are added to the player object.
  4. Creating New ScriptableObjects:
    • To create new characters and abilities using the CharacterConfig and SpellConfig classes, follow these steps:

Creating New ScriptableObjects​

  1. In the Unity Editor, right-click in the Project window.
  2. To create a new character configuration, select Create > Configs > Character > New.
    • Rename the ScriptableObject according to the character type, e.g., Warrior, Mage, etc.
  3. To create a new ability configuration, select Create > Configs > Spell > New.
    • Rename the ScriptableObject according to the ability type, e.g., Fireball, IceBlast, etc.

Configuring the New ScriptableObjects​

  1. In the Inspector, define the properties of the new character and ability ScriptableObjects.
  2. For characters, define Character Name, Level, Maximum Health, Attack Power, Defense, Movement Speed, Animation, and add the created abilities to the spells array.
  3. For abilities, define Ability Name, Damage, Speed, Ability Prefab, Ability Sprite, Hotkey, and whether to use the prefab (usePrefab).


View attachment 2024-07-18 17-05-15.mp4
 

Top