/// <summary>
/// 开火状态
/// </summary>
public enum FireState { Auto, SemiAuto }
private FireState state;
/// <summary>
/// 子弹
/// </summary>
public GameObject Bullet;
/// <summary>
/// 枪
/// </summary>
public GameObject Gun;
/// <summary>
/// 射速
/// </summary>
public float fireRate = 0.1f;
/// <summary>
/// 计时器
/// </summary>
public float fireTime;
/// <summary>
/// 是否自动
/// </summary>
private bool isAuto;
void Start()
{
state = FireState.Auto;
}
void Update()
{
Fire();
if (fireTime < fireRate)
{
fireTime += Time.deltaTime;
}
}
/// <summary>
/// 按钮挂载,改变射击状态
/// </summary>
public void ChangeFireState()
{
if (!isAuto)
{
state = FireState.SemiAuto;
}
else
{
state = FireState.Auto;
}
}
private void Fire()
{
switch (state)
{
case FireState.Auto:
AutoFire();
break;
case FireState.SemiAuto:
SemiAutoFire();
break;
default:
break;
}
}
//自动射击
void AutoFire()
{
if (fireTime < fireRate)
return;
if (Input.GetMouseButton(0))
{
GameObject go = Instantiate(Bullet, Gun.transform.position, transform.rotation);
go.name = "bullet";
go.SetActive(value: true);
}
fireTime = 0f;
}
void SemiAutoFire()
{
if (Input.GetMouseButtonDown(0))
{
GameObject go = Instantiate(Bullet, Gun.transform.position, transform.rotation);
go.name = "bullet";
go.SetActive(value: true);
}
}
【Unity】Unity实现 全自动射击按钮可以一直按着射击也可以单点射击,切换射击模式
最新推荐文章于 2024-08-21 17:25:45 发布