Unity3D 之武器系统冷却功能的实现方式
先上方法
//如果Fire1按钮被按下(默认为ctrl),每0.5秒实例化一发子弹
public GameObject projectile; public float fireRate = 0.5F; private float nextFire = 0.0F; void Update() { if (Input.GetButton("Fire1") && Time.time > nextFire) { nextFire = Time.time + fireRate; duck clone = Instantiate(projectile, transform.position, transform.rotation); } }
还有一个简答的方法就是使用MonoBehaviour.InvokeRepeating 重复调用:
在2S后,每隔0.5s进行子弹的实例化。
using UnityEngine; using System.Collections; public class example : MonoBehaviour { public GameObject projectile; public void Awake() { InvokeRepeating("Weapon", 2, 0.5F); } void Weapon() { duck clone = Instantiate(projectile, transform.position, transform.rotation); } }