Como faço pra animação esperar?
3 participantes
Página 1 de 1
Como faço pra animação esperar?
Oi povo, eu to tentando fazer um sistema de combate, a única coisa que eu queria era que quando o personagem (player) desse hit no inimigo, o inimigo mudasse o gráfico pro dele tomando dano.
O jeito q eu fiz foi o seguinte: Existe uma esfera na mão do player que tem um colisor com trigger e no script do inimigo está assim:
void OnTriggerEnter(Collider other){
if (other.gameObject.tag == "PlayerHit"){
(!levandoDano){
anim.SetBool("dano", true);
levandoDano = true;
}
else {
StartCoroutine (waitHit ());
}
}
}
IEnumerator waitHit(){
yield return new WaitForSeconds(0.6f);
levandoDano = false;
}
void Update(){
// Se o inimigo tá com a animação dele parado, desativa a animação dele levando dano
if (this.anim.GetCurrentAnimatorStateInfo (0).IsName ("parado"))
anim.SetBool("dano", false);
}
No controller do inimigo, a transição do hit é assim: De qualquer status vai pro hit e do hit (quando termina) volta pro parado... Ou seja, depois q ele toma o dano, ele volta pra animação dele parado, e oq eu queria é que ele só pudesse voltar a ter a animação do hit se a variável "levandoDano" estivesse false, e ela volta a ficar false dentro do IEnumerator que espera um tempo lá, só que o problema é que ele não espera esse tempo, simplesmente ele fica com a animação de dano toda hora, mesmo se eu colocar no WaitForSeconds um valor alto, tipo 10 segundos !
Existe alguma outra forma de fazer esse sistema de combate?
Oq eu quero era só isso veja:
Tem o raio de visão do inimigo, enquanto o player nao entra nesse raio de visao, o inimigo fica parado com a animação dele parado, quando o player entra no raio de visão, ele começa a andar (vem pra frente e muda a animação dele andando) e quando ele ta numa certa distância do player (bem próximo) ele ataca o player (muda o gráfico dele atacando, dá uma espera pequena e depois ataca de novo).
É só isso, tem como fazer? Pq eu to me matando e não consigo.
O jeito q eu fiz foi o seguinte: Existe uma esfera na mão do player que tem um colisor com trigger e no script do inimigo está assim:
void OnTriggerEnter(Collider other){
if (other.gameObject.tag == "PlayerHit"){
(!levandoDano){
anim.SetBool("dano", true);
levandoDano = true;
}
else {
StartCoroutine (waitHit ());
}
}
}
IEnumerator waitHit(){
yield return new WaitForSeconds(0.6f);
levandoDano = false;
}
void Update(){
// Se o inimigo tá com a animação dele parado, desativa a animação dele levando dano
if (this.anim.GetCurrentAnimatorStateInfo (0).IsName ("parado"))
anim.SetBool("dano", false);
}
No controller do inimigo, a transição do hit é assim: De qualquer status vai pro hit e do hit (quando termina) volta pro parado... Ou seja, depois q ele toma o dano, ele volta pra animação dele parado, e oq eu queria é que ele só pudesse voltar a ter a animação do hit se a variável "levandoDano" estivesse false, e ela volta a ficar false dentro do IEnumerator que espera um tempo lá, só que o problema é que ele não espera esse tempo, simplesmente ele fica com a animação de dano toda hora, mesmo se eu colocar no WaitForSeconds um valor alto, tipo 10 segundos !
Existe alguma outra forma de fazer esse sistema de combate?
Oq eu quero era só isso veja:
Tem o raio de visão do inimigo, enquanto o player nao entra nesse raio de visao, o inimigo fica parado com a animação dele parado, quando o player entra no raio de visão, ele começa a andar (vem pra frente e muda a animação dele andando) e quando ele ta numa certa distância do player (bem próximo) ele ataca o player (muda o gráfico dele atacando, dá uma espera pequena e depois ataca de novo).
É só isso, tem como fazer? Pq eu to me matando e não consigo.
helloWorld1- Iniciante
- PONTOS : 2635
REPUTAÇÃO : 0
Respeito as regras :
Re: Como faço pra animação esperar?
tem uns videos do paulo do we make a game q ele ensina
mas pra resumir, vc tem que criar um trigger em um Sphere collider ( seria a visão ou espaço onde a animação ocorrera)
ai parte para o script, onde vc add public de distancia e velocidades( usando a NavMesh e Rigibody claro)
mas pra resumir, vc tem que criar um trigger em um Sphere collider ( seria a visão ou espaço onde a animação ocorrera)
ai parte para o script, onde vc add public de distancia e velocidades( usando a NavMesh e Rigibody claro)
Re: Como faço pra animação esperar?
Funciona assim mano
No script do player ou inimigo voce colocar ua funçao dessa
No script do player ou inimigo voce colocar ua funçao dessa
- Código:
public void Damage (int damage) {
if(!isDead)//Variavel de morte
{
health -= damage;//Isso vai tirar vida do personagem
Instantiate(damageParticle,transform.position,transform.rotation);//particula de sangue
anim.SetTrigger("isHit");//Animaçao de dano
}
- Código:
void OnTriggerEnter(Collider col){
if(col.gameObject.tag == "Enemy"){
damage = attackBonus;
col.gameObject.GetComponent<EnemyStats>().Damage(damage);
}
}
Tópicos semelhantes
» [DUVIDA]como faço pra esperar uma tarefa seja feita
» Quero fazer um sistema de apertar uma tecla e ativar uma ação ou animação, como faço?
» Como eu faço para ativar essa animação
» Quiz 2D Unity - Como esperar segundos para ir pra próxima pergunta????
» Como eu faço uma vítima com animação para um jogo de terror
» Quero fazer um sistema de apertar uma tecla e ativar uma ação ou animação, como faço?
» Como eu faço para ativar essa animação
» Quiz 2D Unity - Como esperar segundos para ir pra próxima pergunta????
» Como eu faço uma vítima com animação para um jogo de terror
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos