Newer
Older
DungeonShooting / DungeonShooting_Godot / src / config / Weapon.cs
  1. namespace Config;
  2.  
  3. public class Weapon
  4. {
  5. /// <summary>
  6. /// 物体唯一id <br/>
  7. /// 不需要添加类型前缀
  8. /// </summary>
  9. public string Id;
  10.  
  11. /// <summary>
  12. /// 武器 Prefab, 必须继承场景 "res://prefab/weapon/Weapon.tscn"
  13. /// </summary>
  14. public string Prefab;
  15.  
  16. /// <summary>
  17. /// 重量
  18. /// </summary>
  19. public float Weight;
  20.  
  21. /// <summary>
  22. /// 武器显示的名称
  23. /// </summary>
  24. public string Name;
  25.  
  26. /// <summary>
  27. /// 武器的图标
  28. /// </summary>
  29. public string Icon;
  30.  
  31. /// <summary>
  32. /// 武器类型: <br/>
  33. /// 1.副武器 <br/>
  34. /// 2.主武器 <br/>
  35. /// 3.重型武器
  36. /// </summary>
  37. public byte WeightType;
  38.  
  39. /// <summary>
  40. /// 是否连续发射, 如果为false, 则每次发射都需要扣动扳机
  41. /// </summary>
  42. public bool ContinuousShoot;
  43.  
  44. /// <summary>
  45. /// 弹夹容量
  46. /// </summary>
  47. public int AmmoCapacity;
  48.  
  49. /// <summary>
  50. /// 弹药容量上限
  51. /// </summary>
  52. public int MaxAmmoCapacity;
  53.  
  54. /// <summary>
  55. /// 起始备用弹药数量
  56. /// </summary>
  57. public int StandbyAmmoCapacity;
  58.  
  59. /// <summary>
  60. /// 装弹时间, 单位: 秒
  61. /// </summary>
  62. public float ReloadTime;
  63.  
  64. /// <summary>
  65. /// 每粒子弹是否是单独装填, 如果是, 那么每上一发子弹的时间就是 ReloadTime, 可以做霰弹武器装填效果
  66. /// </summary>
  67. public bool AloneReload;
  68.  
  69. /// <summary>
  70. /// 单独装填时每次装填子弹数量, 必须要将 'AloneReload' 属性设置为 true
  71. /// </summary>
  72. public int AloneReloadCount;
  73.  
  74. /// <summary>
  75. /// 单独装填的子弹时可以立即射击, 必须要将 'AloneReload' 属性设置为 true
  76. /// </summary>
  77. public bool AloneReloadCanShoot;
  78.  
  79. /// <summary>
  80. /// 是否为松发开火, 也就是松开扳机才开火, 若要启用该属性, 必须将 'ContinuousShoot' 设置为 false
  81. /// </summary>
  82. public bool LooseShoot;
  83.  
  84. /// <summary>
  85. /// 最少需要蓄力多久才能开火, 必须将 'LooseShoot' 设置为 true
  86. /// </summary>
  87. public float MinChargeTime;
  88.  
  89. /// <summary>
  90. /// 连续发射最小次数, 仅当 ContinuousShoot 为 false 时生效
  91. /// </summary>
  92. public int MinContinuousCount;
  93.  
  94. /// <summary>
  95. /// 连续发射最大次数, 仅当 ContinuousShoot 为 false 时生效
  96. /// </summary>
  97. public int MaxContinuousCount;
  98.  
  99. /// <summary>
  100. /// 按下一次扳机后需要多长时间才能再次感应按下
  101. /// </summary>
  102. public float TriggerInterval;
  103.  
  104. /// <summary>
  105. /// 初始射速, 初始每分钟能开火次数
  106. /// </summary>
  107. public float StartFiringSpeed;
  108.  
  109. /// <summary>
  110. /// 最终射速, 最终每分钟能开火次数, 仅当 ContinuousShoot 为 true 时生效
  111. /// </summary>
  112. public float FinalFiringSpeed;
  113.  
  114. /// <summary>
  115. /// 按下扳机并开火后射速增加速率
  116. /// </summary>
  117. public float FiringSpeedAddSpeed;
  118.  
  119. /// <summary>
  120. /// 松开扳机后射速消散速率
  121. /// </summary>
  122. public float FiringSpeedBackSpeed;
  123.  
  124. /// <summary>
  125. /// 单次开火发射子弹最小数量
  126. /// </summary>
  127. public int MinFireBulletCount;
  128.  
  129. /// <summary>
  130. /// 单次开火发射子弹最大数量
  131. /// </summary>
  132. public int MaxFireBulletCount;
  133.  
  134. /// <summary>
  135. /// 开火前延时
  136. /// </summary>
  137. public float DelayedTime;
  138.  
  139. /// <summary>
  140. /// 初始散射半径
  141. /// </summary>
  142. public float StartScatteringRange;
  143.  
  144. /// <summary>
  145. /// 最终散射半径
  146. /// </summary>
  147. public float FinalScatteringRange;
  148.  
  149. /// <summary>
  150. /// 每次发射后散射增加值
  151. /// </summary>
  152. public float ScatteringRangeAddValue;
  153.  
  154. /// <summary>
  155. /// 松开扳机后散射销退速率
  156. /// </summary>
  157. public float ScatteringRangeBackSpeed;
  158.  
  159. /// <summary>
  160. /// 松开扳机多久后开始销退散射值 (单位: 秒)
  161. /// </summary>
  162. public float ScatteringRangeBackTime;
  163.  
  164. /// <summary>
  165. /// 子弹飞行最大距离
  166. /// </summary>
  167. public float MaxDistance;
  168.  
  169. /// <summary>
  170. /// 子弹飞行最小距离
  171. /// </summary>
  172. public float MinDistance;
  173.  
  174. /// <summary>
  175. /// 最大后坐力 (仅用于开火后武器身抖动)
  176. /// </summary>
  177. public float MaxBacklash;
  178.  
  179. /// <summary>
  180. /// 最小后坐力 (仅用于开火后武器身抖动)
  181. /// </summary>
  182. public float MinBacklash;
  183.  
  184. /// <summary>
  185. /// 后坐力偏移回归回归速度
  186. /// </summary>
  187. public float BacklashRegressionSpeed;
  188.  
  189. /// <summary>
  190. /// 开火后武器口上抬角度
  191. /// </summary>
  192. public float UpliftAngle;
  193.  
  194. /// <summary>
  195. /// 武器默认上抬角度
  196. /// </summary>
  197. public float DefaultAngle;
  198.  
  199. /// <summary>
  200. /// 开火后武器口角度恢复速度倍数
  201. /// </summary>
  202. public float UpliftAngleRestore;
  203.  
  204. /// <summary>
  205. /// 默认射出的子弹id
  206. /// </summary>
  207. public string BulletId;
  208.  
  209. /// <summary>
  210. /// 投抛状态下物体碰撞器大小
  211. /// </summary>
  212. public Godot.Vector2 ThrowCollisionSize;
  213.  
  214. }