我试图在更新功能中调用拍摄动画,然后在产生激光照片之前等待0.5秒。以下代码对我不起作用。我该怎么做才能达到预期的效果?
void Update()
{
if (Input.GetMouseButtonDown (0))
{
animator.SetTrigger("Shoot"); // Start animation
WaitAndShoot();
}
}
IEnumerator WaitAndShoot()
{
yield return new WaitForSeconds(0.5f);
Instantiate (shot, shotSpawn.transform.position,shotSpawn.transform.rotation);
}
答案 0 :(得分:10)
您忘记使用StartCoroutine()
将其称为协程。
应该是:
void Update()
{
if (Input.GetMouseButtonDown (0))
{
animator.SetTrigger("Shoot"); // Start animation
StartCoroutine(WaitAndShoot());
}
}
IEnumerator WaitAndShoot()
{
yield return new WaitForSeconds(0.5f);
Instantiate (shot, shotSpawn.transform.position,shotSpawn.transform.rotation);
}
请记住,这仍然允许您在第一次拍摄之前触发多次拍摄。如果你想防止这种情况发生,用布尔值跟踪被射击的射击,并检查除GetMouseButtonDown之外的射击。