【发布时间】:2021-05-23 10:31:03
【问题描述】:
在 C# Unity3D 中,我试图让子弹以bulletTime 的间隔发射。单发目前工作得非常好,但是当我按住开火按钮时,只创建并射击了 1 颗子弹,然后什么都没有发生。
// Left mouse button HELD down.
else if (fireAgain && Input.GetMouseButton(0))
{
StartCoroutine("LoopNShoot");
fireAgain = false;
}
else if (timerH < bulletTime)
{
timerH += Time.deltaTime;
if(timerH >= bulletTime)
{
fireAgain = true;
timerH = 0;
}
}
IEnumerator LoopNShoot()
{
pivot.transform.Rotate(triggerAngle,0,0);
GameObject bullet = ObjectPooler.SharedInstance.GetPooledObject();
if (bullet != null) {
bullet.transform.position = SSpawn.transform.position;
bullet.transform.rotation = SSpawn.transform.rotation;
bullet.SetActive(true);
}
yield return new WaitForSeconds(.1f);
pivot.transform.rotation = Quaternion.Slerp(transform.rotation, originalRotationValue, Time.deltaTime * rotationResetSpeed);
}
我想我需要将所有的 if 语句和计时器放在协程中吗?但这似乎也无济于事......
请忽略枢轴和旋转,它适用于某些动画,唯一不起作用的是在按住开火按钮时以设定的间隔连续射击子弹。
【问题讨论】:
-
你应该重新格式化你的代码。
-
@marsh-wiggle 应该重新格式化什么?