Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / item / weapon / WeaponAttribute.cs
@小李xl 小李xl on 27 Aug 2022 4 KB 抽象出ThrowComponent组件
  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 = "res://prefab/weapon/Weapon.tscn";
  16. /// <summary>
  17. /// 武器类型
  18. /// </summary>
  19. public WeaponWeightType WeightType = WeaponWeightType.MainWeapon;
  20. /// <summary>
  21. /// 武器的图片
  22. /// </summary>
  23. public string Sprite = "res://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 = 90;
  36. /// <summary>
  37. /// 装弹时间, 单位: 秒
  38. /// </summary>
  39. public float ReloadTime = 1.5f;
  40. /// <summary>
  41. /// 每粒子弹是否是单独装填, 如果是, 那么每上一发子弹的时间就是 ReloadTime, 可以做霰弹武器装填效果
  42. /// </summary>
  43. public bool AloneReload = false;
  44. /// <summary>
  45. /// 单独装填时每次装填子弹数量, 必须要将 'AloneReload' 属性设置为 true
  46. /// </summary>
  47. public int AloneReloadCount = 1;
  48. /// <summary>
  49. /// 单独装填的子弹时可以立即射击, 必须要将 'AloneReload' 属性设置为 true
  50. /// </summary>
  51. public bool AloneReloadCanShoot = false;
  52. /// <summary>
  53. /// 是否为松发开火, 也就是松开扳机才开火, 若要启用该属性, 必须将 'ContinuousShoot' 设置为 false
  54. /// </summary>
  55. public bool LooseShoot = false;
  56. /// <summary>
  57. /// 连续发射最小次数, 仅当 ContinuousShoot 为 false 时生效
  58. /// </summary>
  59. public int MinContinuousCount = 3;
  60. /// <summary>
  61. /// 连续发射最大次数, 仅当 ContinuousShoot 为 false 时生效
  62. /// </summary>
  63. public int MaxContinuousCount = 3;
  64. /// <summary>
  65. /// 按下一次扳机后需要多长时间才能再次按下
  66. /// </summary>
  67. public float TriggerInterval = 0;
  68. /// <summary>
  69. /// 初始射速, 初始每秒分钟能发射多少发子弹
  70. /// </summary>
  71. public float StartFiringSpeed = 300;
  72. /// <summary>
  73. /// 最终射速, 最终每秒分钟能发射多少发子弹
  74. /// </summary>
  75. public float FinalFiringSpeed = 300;
  76. /// <summary>
  77. /// 按下扳机并开火后射速增加速率
  78. /// </summary>
  79. public float FiringSpeedAddSpeed = 2;
  80. /// <summary>
  81. /// 松开扳机后射速消散速率
  82. /// </summary>
  83. public float FiringSpeedBackSpeed = 10;
  84. /// <summary>
  85. /// 单次开火发射子弹最小数量
  86. /// </summary>
  87. public int MinFireBulletCount = 1;
  88. /// <summary>
  89. /// 单次开火发射子弹最大数量
  90. /// </summary>
  91. public int MaxFireBulletCount = 1;
  92. /// <summary>
  93. /// 开火前延时
  94. /// </summary>
  95. public float DelayedTime = 0f;
  96. /// <summary>
  97. /// 初始散射半径
  98. /// </summary>
  99. public float StartScatteringRange = 0;
  100. /// <summary>
  101. /// 最终散射半径
  102. /// </summary>
  103. public float FinalScatteringRange = 20;
  104. /// <summary>
  105. /// 每次发射后散射增加值
  106. /// </summary>
  107. public float ScatteringRangeAddValue = 2;
  108. /// <summary>
  109. /// 松开扳机后散射销退速率
  110. /// </summary>
  111. public float ScatteringRangeBackSpeed = 10;
  112. /// <summary>
  113. /// 子弹飞行最大距离
  114. /// </summary>
  115. public float MaxDistance = 600;
  116. /// <summary>
  117. /// 子弹飞行最小距离
  118. /// </summary>
  119. public float MinDistance = 800;
  120. /// <summary>
  121. /// 武器精灵的旋转中心坐标
  122. /// </summary>
  123. public Vector2 CenterPosition = new Vector2(0, 0);
  124. /// <summary>
  125. /// 开火位置
  126. /// </summary>
  127. public Vector2 FirePosition = new Vector2(11, 0);
  128. /// <summary>
  129. /// 握把位置
  130. /// </summary>
  131. public Vector2 HoldPosition = new Vector2(4, -3);
  132. /// <summary>
  133. /// 重量
  134. /// </summary>
  135. public float Weight = 11;
  136. /// <summary>
  137. /// 最大后坐力 (仅用于开火后武器身抖动)
  138. /// </summary>
  139. public float MaxBacklash = 4;
  140. /// <summary>
  141. /// 最小后坐力 (仅用于开火后武器身抖动)
  142. /// </summary>
  143. public float MinBacklash = 2;
  144. /// <summary>
  145. /// 开火后武器口上抬角度
  146. /// </summary>
  147. public float UpliftAngle = 30;
  148. /// <summary>
  149. /// 开火后武器口角度恢复速度倍数
  150. /// </summary>
  151. public float UpliftAngleRestore = 1;
  152. }