내 게임에서 애니메이터의 한 상태가 완료된 후 수동으로 다른 상태를 트리거하는지 확인하고 싶습니다. 그러나 확인할 수 없습니다. 내가 잘못 가고 어떤 제안이 여기에 내가했던 코드입니다,이 코드는 업데이트 기능에 (매개 변수 'for_fire'와 국가 이름 '화재 3 서있는 것은'하나 개의 상태에 대해 동일) :애니메이터 상태가 오히려 완료되지 않았는지 확인
counter_anim++;
if (counter_anim >= 5)
{
counter_anim = 0;
float distance = Vector3.Distance (this.transform.position, new_target_points);
if (distance <= 1.0f && !enter_state)
{
navmesh.Stop();
anim.SetBool ("is_Firing", false);
anim.SetBool ("for_fire", true);
print ("i come here "+this.anim.GetCurrentAnimatorStateInfo (0).IsName ("Standing fire 3"));
if (this.anim.GetCurrentAnimatorStateInfo (0).IsName ("Standing fire 3") == true)
{
enter_state = true; // this bool variable is not getting true
}
}
}
//print (enter_state+" "+ this.anim.GetCurrentAnimatorStateInfo (0).IsName ("Standing fire 3"));
if (enter_state && this.anim.GetCurrentAnimatorStateInfo (0).IsName ("Standing fire 3")==false)
{
//print (this.gameObject.GetComponent<Animator>().GetCurrentAnimatorStateInfo (0).IsName ("Standing fire 3"));
anim.SetBool ("for_fire",false);
anim.SetBool ("new_pos",true);
fire_occured();
}
나는 적을 자신의 위치로 이동하고 잠시 멈추고 서서,이 애니메이션이 멈추고 다음 애니메이션이 시작된다. 코멘트에서 복사
여기서 볼 수없는 몇 가지 사항이 잘못 될 수 있습니다. E.G. new_target_points까지의 거리, 1f보다 낮습니까? enter_state가 false로 시작합니까? – Hrusilov
예, 1f보다 낮아지고 여기에서 디버깅을 했으므로 확실합니다. enter_state는 기본적으로 false입니다. –
EventHough는 IsName() 메서드를 사용하여 일부 구현을 보았습니다. 일반적으로 태그를 사용합니다. if (this.anim.GetCurrentAnimatorStateInfo 0) .IsTag ("Standing fire 3")). 이것은 definitelly 나를 위해 일했다. Animator에서 태그로 상태를 태그하십시오. – Hrusilov