我的While循环一次执行所有内容(C#)
本文关键字:执行 一次 While 我的 循环 | 更新日期: 2023-09-27 18:26:53
所以我把这个脚本附加到了一个游戏中,我添加的While循环应该跟踪弹药,每次我发射火箭时都会下降1,但当我在游戏中左键点击(射击)时,它会同时发射我所有的弹药。我的代码:
public class CreateRocket : MonoBehaviour {
public Rigidbody rocket;
public float speed = 10f;
public int aantalRaketten;
public int Ammo = 10;
// Use this for initialization
void Start () {}
// Update is called once per frame
void Update () {
if (Input.GetButtonDown("Fire1"))
{
FireRocket();
}
}
void FireRocket()
{
while (Ammo >= aantalRaketten)
{
Ammo--;
Rigidbody rocketClone = (Rigidbody)Instantiate(rocket, transform.position + transform.forward * 2, transform.rotation);
rocketClone.velocity = transform.forward * speed;
}
}
}
谢谢!
好吧:但当我在游戏中左键点击(射击)时,它会同时发射我所有的弹药
是的,这正是你在while循环中所做的,运行直到你的条件为false(aantalRaketten=0?):
while (Ammo >= aantalRaketten)
{
Ammo--;
Rigidbody rocketClone = (Rigidbody)Instantiate(rocket, transform.position + transform.forward * 2, transform.rotation);
rocketClone.velocity = transform.forward * speed;
}
我认为你需要把时间改为如果,以检查是否有火箭可以发射:
if (Ammo > 0)
{
Ammo--;
Rigidbody rocketClone = (Rigidbody)Instantiate(rocket, transform.position + transform.forward * 2, transform.rotation);
rocketClone.velocity = transform.forward * speed;
}
您误解了什么是while
循环。关键是单词循环。循环的主体可以执行多次:
while (Ammo >= aantalRaketten)
{
Ammo--;
....
}
循环的条件决定主体是否被执行。当循环主体完成时,将再次测试条件。如果条件计算结果为true,则主体将再次执行。此循环将继续,直到条件计算结果为false。
我想你是想用if
声明来写这篇文章的。
if (Ammo >= aantalRaketten)
{
Ammo--;
....
}
在这里,身体最多执行一次。如果条件计算结果为true,则执行if
语句的If主体。没有循环,没有迭代。
删除循环!毕竟,每次发射火箭时,你只想发射一个单位的弹药。
当您调用void FireRocket()
一次时,它会进入并完全运行while()
循环,并发射所有火箭。。
你想要的是在void FireRocket()
中只有if
,以检查Ammo
是否可以拍摄。。像这个
if(Ammo >= aantalRaketten)
{
Ammo--;
Rigidbody rocketClone = (Rigidbody)Instantiate(rocket, transform.position + transform.forward * 2, transform.rotation);
rocketClone.velocity = transform.forward * speed;
}
void FireRocket()
内部
Ammo
结束后,else
将显示您想要向玩家显示的内容。。