这是我的拍摄脚本,我设置这些在固定的更新方法,因为它应该是,但我的鼠标输入一直按下,我试图使一个fps游戏,但我的鼠标输入一直按下,有人能帮助我吗?这也发生在键盘输入。
void FixedUpdate()
{
if(isReloading)
{
return;
}
if (currentAmmo <= 0)
{
StartCoroutine(Reload());
return;
}
if(Input.GetKey(KeyCode.R))
{
Debug.Log("R key was pressed.");
StartCoroutine(Reload());
return;
}
if(Input.GetButton("Fire1") && Time.time >= nextTimeToFire)
{
nextTimeToFire = Time.time + 1f / fireRate;
Shooting();
}
}
IEnumerator Reload()
{
isReloading = true;
UIController.instance.reloadMSG.gameObject.SetActive(true);
Debug.Log("reloading");
yield return new WaitForSeconds(reloadTime);
currentAmmo = maxAmmo;
isReloading = false;
UIController.instance.reloadMSG.gameObject.SetActive(false);
}
private void Shooting()
{
currentAmmo--;
Debug.Log("Current Ammo:" + currentAmmo);
RaycastHit hit;
if (Physics.Raycast(fpsCam.transform.position, fpsCam.transform.forward, out hit, range))
{
GameObject bulletImpactObject = Instantiate(bulletImpact, hit.point + (hit.normal * 0.002f), Quaternion.LookRotation(hit.normal, Vector3.up));
Destroy(bulletImpactObject, 10f);
}
UIController.instance.ammoTXT.text = (currentAmmo + " / " + maxAmmo).ToString();
}
2条答案
按热度按时间rjee0c151#
几年前我做了一个自顶向下的射手,我有一个类似的问题。尝试改变这个:
从比较中去掉“=”,只把射速相加而不是相除。我当时就是这么做的。还有,你打算在枪重新装弹的时候做些什么吗?因为如果没有,它只是检查它是否在重新装弹,你可以这样做:
niknxzdl2#
这是一个GunController脚本,可以做你想做的事情。增加了武器后坐力
这个脚本应该附加到代表枪的游戏对象上。这个脚本有几个公共变量可以自定义:
bulletPrefab
是将要发射的子弹的预制件。bulletSpawn
是表示子弹的产生点的游戏对象的变换组件。fireRate
是以秒为单位的射速。这决定了火炮可以发射的频率。recoil
是当枪发射时施加到玩家的后坐力。magazineSize
是杂志的大小。这决定了枪能装多少子弹。