Newer
Older
DungeonShooting / DungeonShooting_Godot / src / framework / activity / ExternalForce.cs
@小李xl 小李xl on 21 Nov 2023 1 KB 添加击退函数
  1.  
  2. using Godot;
  3.  
  4. /// <summary>
  5. /// 物体所受到的外力的描述对象
  6. /// </summary>
  7. public class ExternalForce
  8. {
  9. /// <summary>
  10. /// 所在的移动控制器
  11. /// </summary>
  12. public MoveController MoveController { get; set; }
  13. /// <summary>
  14. /// 当前力的名称
  15. /// </summary>
  16. public string Name { get; }
  17.  
  18. /// <summary>
  19. /// 是否启用这个力对象, 如果禁用, 则该力对象则不会参与到运动计算当中, 而且不会调用 PhysicsProcess 方法
  20. /// </summary>
  21. public bool Enable { get; set; } = true;
  22.  
  23. /// <summary>
  24. /// 是否在空中也会受到阻力
  25. /// </summary>
  26. public bool EnableResistanceInTheAir { get; set; } = false;
  27.  
  28. /// <summary>
  29. /// 当速度( Velocity 和 RotationSpeed )到达 0 后是否自动销毁, 默认 true
  30. /// </summary>
  31. public bool AutoDestroy { get; set; } = true;
  32. /// <summary>
  33. /// 速率的阻力大小, 也就是速度每秒衰减的量
  34. /// </summary>
  35. public float VelocityResistance { get; set; }
  36. /// <summary>
  37. /// 当前力的速率
  38. /// </summary>
  39. public Vector2 Velocity { get; set; } = Vector2.Zero;
  40.  
  41. /// <summary>
  42. /// 当前力对物体造成的旋转速度, 弧度制
  43. /// </summary>
  44. public float RotationSpeed { get; set; }
  45. /// <summary>
  46. /// 旋转速率阻力大小, 也就是速度每秒衰减的量
  47. /// </summary>
  48. public float RotationResistance { get; set; }
  49.  
  50. /// <summary>
  51. /// 物理帧更新
  52. /// </summary>
  53. public virtual void PhysicsProcess(float delta)
  54. {
  55. }
  56.  
  57. public ExternalForce(string name)
  58. {
  59. Name = name;
  60. }
  61. }