尝试让程序等待几秒钟,然后使用Unity继续使用C#

时间:2016-02-28 12:29:13

标签: c# unity3d unity5

我正在编写一些代码来进行人工智能射击,但是人工智能射击速度太快,以至于它会击中它自己的子弹并且会爆炸。我试图在两者之间添加延迟,但我不知道该怎么做。这是我需要它的代码的一部分。请帮忙,谢谢!

fetchArray

1 个答案:

答案 0 :(得分:2)

为了正确发生这种情况,你需要考虑它失败的原因。原因是OnTriggerStay是为玩家在对撞机内的每个FixedUpdate调用的。

你想要的是一种不同的方法。

private bool isInside = false;
void OnTriggerEnter(Collider col){
    if(col.gameObject.CompareTag("Player") == false){ return; }
    isInside = true;
    Fire();
}
void OnTriggerExit(Collider col){
    if(col.gameObject.CompareTag("Player") == false){ return; }
    isInside = false;
    timer  = 0f;
}
private float timer = 0f;
private float waitTime = 0.2f;
void Update(){
    if(isInside == false) { return; }
    if(timer > waitTime){
        timer = 0f;
        Fire();
    }
    timer += Time.deltaTime;
}