Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / item / weapon / WeaponAttribute.cs
  1. using Godot;
  2.  
  3. /// <summary>
  4. /// 武器上的属性
  5. /// </summary>
  6. public class WeaponAttribute
  7. {
  8. /// <summary>
  9. /// 武器显示的名称
  10. /// </summary>
  11. public string Name = "Gun1";
  12. /// <summary>
  13. /// 武器 Prefab, 必须继承场景 "res://prefab/weapon/Weapon.tscn"
  14. /// </summary>
  15. public string WeaponPrefab = ResourcePath.prefab_weapon_Weapon_tscn;
  16. /// <summary>
  17. /// 武器类型
  18. /// </summary>
  19. public WeaponWeightType WeightType = WeaponWeightType.MainWeapon;
  20. /// <summary>
  21. /// 武器的图片
  22. /// </summary>
  23. public string Sprite = ResourcePath.resource_sprite_gun_gun1_png;
  24. /// <summary>
  25. /// 是否连续发射, 如果为false, 则每次发射都需要扣动扳机
  26. /// </summary>
  27. public bool ContinuousShoot = true;
  28. /// <summary>
  29. /// 弹夹容量
  30. /// </summary>
  31. public int AmmoCapacity = 30;
  32. /// <summary>
  33. /// 弹药容量上限
  34. /// </summary>
  35. public int MaxAmmoCapacity = 120;
  36. /// <summary>
  37. /// 备用弹药数量
  38. /// </summary>
  39. public int StandbyAmmoCapacity = 90;
  40. /// <summary>
  41. /// 装弹时间, 单位: 秒
  42. /// </summary>
  43. public float ReloadTime = 1.5f;
  44. /// <summary>
  45. /// 每粒子弹是否是单独装填, 如果是, 那么每上一发子弹的时间就是 ReloadTime, 可以做霰弹武器装填效果
  46. /// </summary>
  47. public bool AloneReload = false;
  48. /// <summary>
  49. /// 单独装填时每次装填子弹数量, 必须要将 'AloneReload' 属性设置为 true
  50. /// </summary>
  51. public int AloneReloadCount = 1;
  52. /// <summary>
  53. /// 单独装填的子弹时可以立即射击, 必须要将 'AloneReload' 属性设置为 true
  54. /// </summary>
  55. public bool AloneReloadCanShoot = false;
  56. /// <summary>
  57. /// 是否为松发开火, 也就是松开扳机才开火, 若要启用该属性, 必须将 'ContinuousShoot' 设置为 false
  58. /// </summary>
  59. public bool LooseShoot = false;
  60. /// <summary>
  61. /// 最少需要蓄力多久才能开火, 必须将 'LooseShoot' 设置为 true
  62. /// </summary>
  63. public float MinChargeTime = 0f;
  64. /// <summary>
  65. /// 连续发射最小次数, 仅当 ContinuousShoot 为 false 时生效
  66. /// </summary>
  67. public int MinContinuousCount = 1;
  68. /// <summary>
  69. /// 连续发射最大次数, 仅当 ContinuousShoot 为 false 时生效
  70. /// </summary>
  71. public int MaxContinuousCount = 1;
  72. /// <summary>
  73. /// 按下一次扳机后需要多长时间才能再次感应按下
  74. /// </summary>
  75. public float TriggerInterval = 0;
  76. /// <summary>
  77. /// 初始射速, 初始每分钟能开火次数
  78. /// </summary>
  79. public float StartFiringSpeed = 300;
  80. /// <summary>
  81. /// 最终射速, 最终每分钟能开火次数
  82. /// </summary>
  83. public float FinalFiringSpeed = 300;
  84. /// <summary>
  85. /// 按下扳机并开火后射速增加速率
  86. /// </summary>
  87. public float FiringSpeedAddSpeed = 2;
  88. /// <summary>
  89. /// 松开扳机后射速消散速率
  90. /// </summary>
  91. public float FiringSpeedBackSpeed = 10;
  92. /// <summary>
  93. /// 单次开火发射子弹最小数量
  94. /// </summary>
  95. public int MinFireBulletCount = 1;
  96. /// <summary>
  97. /// 单次开火发射子弹最大数量
  98. /// </summary>
  99. public int MaxFireBulletCount = 1;
  100. /// <summary>
  101. /// 开火前延时
  102. /// </summary>
  103. public float DelayedTime = 0f;
  104. /// <summary>
  105. /// 初始散射半径
  106. /// </summary>
  107. public float StartScatteringRange = 0;
  108. /// <summary>
  109. /// 最终散射半径
  110. /// </summary>
  111. public float FinalScatteringRange = 20;
  112. /// <summary>
  113. /// 每次发射后散射增加值
  114. /// </summary>
  115. public float ScatteringRangeAddValue = 2;
  116. /// <summary>
  117. /// 松开扳机后散射销退速率
  118. /// </summary>
  119. public float ScatteringRangeBackSpeed = 10;
  120. /// <summary>
  121. /// 子弹飞行最大距离
  122. /// </summary>
  123. public float MaxDistance = 600;
  124. /// <summary>
  125. /// 子弹飞行最小距离
  126. /// </summary>
  127. public float MinDistance = 800;
  128. /// <summary>
  129. /// 武器精灵的旋转中心坐标
  130. /// </summary>
  131. public Vector2 CenterPosition = new Vector2(0, 0);
  132. /// <summary>
  133. /// 开火位置
  134. /// </summary>
  135. public Vector2 FirePosition = new Vector2(11, 0);
  136. /// <summary>
  137. /// 握把位置
  138. /// </summary>
  139. public Vector2 HoldPosition = new Vector2(4, -3);
  140. /// <summary>
  141. /// 重量
  142. /// </summary>
  143. public float Weight = 11;
  144. /// <summary>
  145. /// 最大后坐力 (仅用于开火后武器身抖动)
  146. /// </summary>
  147. public float MaxBacklash = 4;
  148. /// <summary>
  149. /// 最小后坐力 (仅用于开火后武器身抖动)
  150. /// </summary>
  151. public float MinBacklash = 2;
  152. /// <summary>
  153. /// 后坐力偏移回归回归速度
  154. /// </summary>
  155. public float BacklashRegressionSpeed = 35f;
  156. /// <summary>
  157. /// 开火后武器口上抬角度
  158. /// </summary>
  159. public float UpliftAngle = 30;
  160. /// <summary>
  161. /// 武器默认上抬角度
  162. /// </summary>
  163. public float DefaultAngle = 0;
  164. /// <summary>
  165. /// 开火后武器口角度恢复速度倍数
  166. /// </summary>
  167. public float UpliftAngleRestore = 1f;
  168. }