public class GunShoot : MonoBehaviour
{
[Tooltip("子弹预制体")]
public GameObject bulletPrefab;
[Tooltip("射击间隔")]
public float interval=0.2f;
[Tooltip("枪口位置")]
public Transform muzzleTrans;
[Tooltip("子弹速度")]
public float bulletSpeed;
float timer;
private void Awake()
{
muzzleTrans = transform.Find("Muzzle");
}
public virtual void Shoot(Vector3 pos)
{
if (timer ==0)
{
Fire(pos);
timer += Time.deltaTime;
}
}
private void Update()
{
ShootCold(Time.deltaTime);
}
/// <summary>
/// 射击冷却
/// </summary>
/// <param name="deltaTime">帧时间</param>
private void ShootCold(float deltaTime)
{
if (timer != 0)
{
timer += deltaTime;
if (timer >= interval)
{
timer = 0;
}
}
}
/// <summary>
/// 实例化子弹 , 并且向目标位置飞去
/// </summary>
/// <param name="pos">目标点</param>
protected virtual void Fire(Vector3 pos)
{
GameObject projectile = PoolMgr.Instance.GetObj(bulletPrefab);
projectile.transform.position = muzzleTrans.position;
projectile.transform.rotation = Quaternion.identity;
projectile.transform.LookAt(pos);
projectile.GetComponent<Rigidbody>().AddForce(projectile.transform.forward * bulletSpeed);
}
}
unity 简易枪支射击
最新推荐文章于 2023-12-10 16:29:57 发布