【发布时间】:2018-04-27 10:26:50
【问题描述】:
我有一个问题..我希望每次按下箭头键时都会创建我的火球。
-它可以工作,但是:如果(例如)我按下向下箭头,然后在按下向下箭头的同时按下另一个箭头,(例如)向左箭头,它不会创建火球在左边。 但是使用右箭头,一切正常(因为它是 if 语句的第一个)。
-我知道代码从上到下工作,我无法改变这一点。但也许我可以找到一种方法来避免这种情况,让这项工作按我的意愿工作。
(我希望fireSphere的创建就像在以撒的结合中一样:如果你按左,它会向左射击,如果向右,它会向右射击,但是如果你先按左箭头,然后再按左箭头被按下,你按右箭头,它会向右射击。如果你按第一个右,同样的事情)
(英语是我的第二语言,如果你不懂我,请告诉我!我会尽力解释自己更好) 谢谢!
if (Input.GetButton("RightArrow") && Time.time > timeToFire)
{
timeToFire = Time.time + 1 / fireRate;
Instantiate(fireSphere, firePoint.position, firePoint.rotation);
}
if (Input.GetButton("LeftArrow") && Time.time > timeToFire)
{
timeToFire = Time.time + 1 / fireRate;
Instantiate(fireSphere, firePoint.position, firePoint.rotation);
}
if (Input.GetButton("UpArrow") && Time.time > timeToFire)
{
timeToFire = Time.time + 1 / fireRate;
Instantiate(fireSphere, firePoint.position, firePoint.rotation);
}
if (Input.GetButton("DownArrow") && Time.time > timeToFire)
{
timeToFire = Time.time + 1 / fireRate;
Instantiate(fireSphere, firePoint.position, firePoint.rotation);
}
【问题讨论】:
-
也许使用一个不中断的开关
-
我认为这是一个时间问题 - 当你按下按钮时你会做 timeToFire = Time.time + 1 /fireRate;这意味着我认为(如果您按下另一个按钮 - Time.time 不大于 timeToFire 并且它不会创建您的实例
-
我是否理解正确,无论您在代码中按顺序优先按下多少个键,您都只想一次向一个方向射击?并且还有冷却/射速,例如每秒 1 发左右?
-
另外,关于代码中的位置和旋转,你真的改变它们了吗?因为从该代码中,您对所有方向都使用相同的代码。
-
Gunnar B,我想要这样:如果我按下像 DownArrow 这样的按钮,同时按下另一个按钮,比如向上箭头,我希望代码最后初始化 fireSphere按下按钮(在本例中为向上箭头)