[RESOLVIDO] Chamar uma void depois de fazer uma animação
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
[RESOLVIDO] Chamar uma void depois de fazer uma animação
E ai pessoal tudo certo ? Estou com uma duvida a dias com um script que venho fazendo, eu tenho um inimigo que quando chega a 2 metros ou menos do player ele começa fazer uma animação de ataque e chama uma void chamada atacar, e nessa void eu chamo uma coroutina para que o player perca vida de 2.5 em 2.5 segundos. Até ai tudo bem, porem se o player chegar perto do inimigo e sair antes dele fazer a animação de atacar, o player perde vida do mesmo jeito, então eu queria que só chamasse a void atacar quando o inimigo fizesse a animação de atacar. Se alguém puder me ajudar agradeço demais!
Lembrando que só coloquei um trecho do script que interessa.
Lembrando que só coloquei um trecho do script que interessa.
- Código:
void Update()
{
if (Vector3.Distance(transform.position, player.transform.position) <= distanciaVisaoInimigo)
{
navMesh.destination = player.transform.position;
if (vida >= 1 && (Vector3.Distance(transform.position, player.transform.position) <= 2f))
{
anim.SetInteger("Transition", 3); //Aqui ele faz a animação de atacar
Atacar(); //Aqui ele chama a void atacar
} //Eu queria que só chamasse a void atacar depois de ele ter feito a animação
}
}
void Atacar()
{
if (podeAtacar == true)
{
StartCoroutine("TempoDeAtaque");
}
}
IEnumerator TempoDeAtaque()
{
podeAtacar = false;
yield return new WaitForSeconds(2.5f);
podeAtacar = true;
player.GetComponent<Controle>().VidaAtual -= danoAtaqueInimigo;
}
jeancvo3- Membro
- PONTOS : 1501
REPUTAÇÃO : 17
Idade : 27
Respeito as regras :
Re: [RESOLVIDO] Chamar uma void depois de fazer uma animação
Acredito que voce queira adicionar um evento a sua animação. Os eventos servem para voce adicionar voids publicas que realizam alguma função quando chegado em determinado frame.
No final desse tutorial explico sobre os Events e como adicionar: Tutorial Sistema Combo Mobile e PC
Para fazer isso voce tem que deixar sua void public:
Não precisa chamar ela no Update, pois voce vai chama-la na animação. E então sobre sua animação voce clica Ctrl+6 e a aba animation aparece e então voce escolhe quando vai realizar tal função e adicona o evento e escreve o nome da void Atacar.
No final desse tutorial explico sobre os Events e como adicionar: Tutorial Sistema Combo Mobile e PC
Para fazer isso voce tem que deixar sua void public:
- Código:
public void Atacar()
{
\\...
}
Não precisa chamar ela no Update, pois voce vai chama-la na animação. E então sobre sua animação voce clica Ctrl+6 e a aba animation aparece e então voce escolhe quando vai realizar tal função e adicona o evento e escreve o nome da void Atacar.
Pokedlg- ProgramadorMaster
- PONTOS : 2336
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: [RESOLVIDO] Chamar uma void depois de fazer uma animação
Pokedlg escreveu:Acredito que voce queira adicionar um evento a sua animação. Os eventos servem para voce adicionar voids publicas que realizam alguma função quando chegado em determinado frame.
No final desse tutorial explico sobre os Events e como adicionar: Tutorial Sistema Combo Mobile e PC
Para fazer isso voce tem que deixar sua void public:
- Código:
public void Atacar()
{
\\...
}
Não precisa chamar ela no Update, pois voce vai chama-la na animação. E então sobre sua animação voce clica Ctrl+6 e a aba animation aparece e então voce escolhe quando vai realizar tal função e adicona o evento e escreve o nome da void Atacar.
Muito obrigado amigo, era exatamente o que eu precisava!
jeancvo3- Membro
- PONTOS : 1501
REPUTAÇÃO : 17
Idade : 27
Respeito as regras :
Tópicos semelhantes
» [RESOLVIDO] como chamar uma void com get component unity C#
» [Resolvido] Como chamar uma void ou função, através de um botão.
» Chamar void à cada Frames/S
» como chamar void do objeto em que o RayCast bateu?
» como eu consigo chamar uma void pelo comando Input.GetKey?
» [Resolvido] Como chamar uma void ou função, através de um botão.
» Chamar void à cada Frames/S
» como chamar void do objeto em que o RayCast bateu?
» como eu consigo chamar uma void pelo comando Input.GetKey?
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos