As aulas que implementam a animação de dano e de morte do inimigo estão faltando, na aula de implementação de morte só tem referente ao player. Podem corrigir?
As aulas que implementam a animação de dano e de morte do inimigo estão faltando, na aula de implementação de morte só tem referente ao player. Podem corrigir?
Olá amigo, veja essa resposta https://cursos.alura.com.br/forum/topico-sugestao-implementacao-do-dano-e-morte-do-inimigo-441931
Eu vi essa resposta, mas pelo menos para mim só aparece a implementação do dano e morte do player. De qualquer forma, consegui mexer no código e nas animações e implementei tudo :D Mas obg pela ajuda!
Olá @Raphael Cavalcante de Medeiros, também não encontei, somento do player. Tu teve criar um Health.cs pro inimigo ?
Oi! Eu fiz a implementação replicando o passo a passo do player pro inimigo, e fiz as adaptações no código do inimigo com o código disponibilizado da aula.
Boa tarde, pessoal!
Estarei listando todos os passos necessários para implementar a animação de morte para o inimigo. Esses passos não fogem muito dos passos realizados na implementação do player.
Adicionar animação de morte: Insira a animação "anim_dead" no animator controller do enemy.
Criar transição: Conecte "Any state" à animação de morte, desmarcando "Has exit time" e definindo a duração como zero, agora nas condições da transição, adicione o gatilho "dead".
Ajustar animação: Verifique a animação de morte e ajuste os sprites no sprite editor para evitar que o inimigo flutue. E para aplicar clique em "apply" após ajustar os sprites.
No método Awake, que está dentro do arquivo BaseEnemy.cs
, adicione: health.OnHurt += PlayHurtAnim;
, crie o método PlayHurtAnim
com: animator.SetTrigger("hurt");
e adicione o código animator.SetTrigger("dead");
dentro do método HandleDeath
.
Ao fim de toda essa alteração o seu código ficará da seguinte forma:
[RequireComponent(typeof(Animator), typeof(AudioSource))]
public abstract class BaseEnemy : MonoBehaviour
{
// Código omitido
protected virtual void Awake()
{
animator = GetComponent<Animator>();
audioSource = GetComponent<AudioSource>();
health = GetComponent<Health>();
health.OnHurt += PlayHurtAnim; // código adicionado
health.OnDead += HandleDeath;
}
protected abstract void Update();
private void PlayHurtAnim() => animator.SetTrigger("hurt"); // código adicionado
private void HandleDeath()
{
animator.SetTrigger("dead"); // código adicionado
StartCoroutine(DestroyEnemy(2));
}
private IEnumerator DestroyEnemy(int time)
{
yield return new WaitForSeconds(time);
Destroy(this.gameObject);
}
}
Adicionei o comentário // código adicionado
aos trechos que foram adicionados. Por fim, execute o jogo para verificar se a animação de morte e a desativação do movimento funcionam corretamente.
Se precisar de mais alguma coisa, estou aqui para ajudar!