1
This commit is contained in:
@@ -6,82 +6,7 @@ using UnityEngine;
|
||||
using BITKit;
|
||||
namespace BITFALL.Guns
|
||||
{
|
||||
/// <summary>
|
||||
/// 射击模式的接口
|
||||
/// </summary>
|
||||
public interface IFireMode
|
||||
{
|
||||
float FireRate { get; }
|
||||
}
|
||||
/// <summary>
|
||||
/// 后坐力接口定义
|
||||
/// </summary>
|
||||
public interface IRecoil:IProperty
|
||||
{
|
||||
/// <summary>
|
||||
/// 后坐力的方向
|
||||
/// </summary>
|
||||
Vector3 Recoil { get; }
|
||||
Vector3 ViewRecoilScale { get; }
|
||||
}
|
||||
public interface ISpread:IProperty
|
||||
{
|
||||
/// <summary>
|
||||
/// 散射的方向
|
||||
/// </summary>
|
||||
Vector2 Spread { get; }
|
||||
}
|
||||
[Serializable]
|
||||
[CustomType(typeof(ISpread))]
|
||||
public struct VectorSpread:ISpread
|
||||
{
|
||||
[SerializeField] private Vector2 spread;
|
||||
public Vector2 Spread => spread;
|
||||
}
|
||||
[Serializable]
|
||||
[CustomType(typeof(IRecoil))]
|
||||
public struct VectorRecoil:IRecoil
|
||||
{
|
||||
[SerializeField] private Vector3 recoil;
|
||||
[SerializeField] private Vector3 viewRecoilWeight;
|
||||
public Vector3 Recoil => recoil;
|
||||
public Vector3 ViewRecoilScale => viewRecoilWeight;
|
||||
}
|
||||
/// <summary>
|
||||
/// 射击模式的基类
|
||||
/// </summary>
|
||||
public record FireMode : IFireMode {
|
||||
[SerializeField]protected float fireRate;
|
||||
public float FireRate => fireRate;
|
||||
}
|
||||
/// <summary>
|
||||
/// 自动开火模式
|
||||
/// </summary>
|
||||
[System.Serializable]
|
||||
public record AutoFireMode : FireMode
|
||||
{
|
||||
}
|
||||
/// <summary>
|
||||
/// 半自动开火模式
|
||||
/// </summary>
|
||||
[System.Serializable]
|
||||
public record SemiFireMode : FireMode
|
||||
{
|
||||
[SerializeField] private bool requireBoltAction;
|
||||
public bool RequireBoltAction => requireBoltAction;
|
||||
}
|
||||
/// <summary>
|
||||
/// 爆炸射击模式 BurstRound为爆炸开火时一次发射的子弹数量
|
||||
///
|
||||
/// </summary>
|
||||
[System.Serializable]
|
||||
public record BurstFireMode : FireMode
|
||||
{
|
||||
[SerializeField] protected int brustRound;
|
||||
[SerializeField] protected float burstFireInterval;
|
||||
public int BurstRound=> brustRound;
|
||||
public float BurstFireInterval => burstFireInterval;
|
||||
}
|
||||
|
||||
public class AssetableGun : AssetableEquip
|
||||
{
|
||||
[Header(nameof(AssetableGun))]
|
||||
|
Reference in New Issue
Block a user