试图让程序等待几秒钟,然后使用 Unity 在 C# 中继续
Trying to make the program wait for a number of seconds and then continuing in C# using Unity
我正在编写一些代码来让 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;
}
我正在编写一些代码来让 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;
}