c# - 试图让程序等待几秒钟,然后使用 Unity 在 C# 中继续

标签 c# unity3d

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

private void Start()
{
    m_FireButton = "Fire" + m_PlayerNumber;

    m_ChargeSpeed = (m_MaxLaunchForce - m_MinLaunchForce) / m_MaxChargeTime;
}

void OnTriggerStay(Collider other) {
    if (other.tag == "Player")  {
        Fire ();
        //This is where I want to add a delay!
    }
}

最佳答案

要让这一切正常发生,您需要思考失败的原因。原因是玩家在对撞机内的每个 FixedUpdate 都会调用 OnTriggerStay。

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

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;
}

关于c# - 试图让程序等待几秒钟,然后使用 Unity 在 C# 中继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35682535/

相关文章:

c# - 如何停止 nHibernate 以保存 View ?

c# - 是否有 F# 语言的 ServiceStack API

unity3d - 在 Unity 中使用着色器进行相机渲染

c# - 更改 LineRenderer 绘制顺序

c# - 向用户界面报告下载进度

c# - 确定 SQL Server 查询(存储过程)结果类型

c# - 等待运算符的奇怪问题

c# - 如何在c#中将二维整数数组元素转换为字符串?

c# - 如果(!这){ 返回;在 C# 中有意义吗?

unity3d - 放大统一移动