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
- 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
- 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
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
- 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.
- 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.
- Inicialize os Componentes:
- Certifique-se de que os componentes Rigidbody2D, Animator, HealthController, StatsController, e ExpController estejam adicionados ao objeto do player.
- 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
- No Unity Editor, clique com o botão direito na janela Project.
- 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.
- 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
- No Inspector, defina as propriedades dos novos ScriptableObjects de personagem e habilidades.
- 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.
- 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: