Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / activity / prop / PropActivity.cs
@小李xl 小李xl on 13 Mar 2024 1 KB 重构buff中
  1.  
  2. using Godot;
  3.  
  4. /// <summary>
  5. /// 道具基类
  6. /// </summary>
  7. public abstract partial class PropActivity : ActivityObject
  8. {
  9. /// <summary>
  10. /// 道具所属角色
  11. /// </summary>
  12. public Role Master { get; set; }
  13.  
  14. /// <summary>
  15. /// 当道具被拾起时调用 (在 Master 赋值之后调用)
  16. /// </summary>
  17. public abstract void OnPickUpItem();
  18.  
  19. /// <summary>
  20. /// 当道具被移除时调用 (在 Master 置为 null 之前调用)
  21. /// </summary>
  22. public abstract void OnRemoveItem();
  23.  
  24. public override void OnInit()
  25. {
  26. ThrowCollisionMask = PhysicsLayer.Wall;
  27. }
  28.  
  29. /// <summary>
  30. /// 如果道具放入了角色背包中, 则每帧调用
  31. /// </summary>
  32. public virtual void PackProcess(float delta)
  33. {
  34. }
  35.  
  36. /// <summary>
  37. /// 触发扔掉道具效果, 并不会管道具是否在道具背包中
  38. /// </summary>
  39. /// <param name="master">触发扔掉该道具的的角色</param>
  40. public void ThrowProp(Role master)
  41. {
  42. ThrowProp(master, master.GlobalPosition);
  43. }
  44. /// <summary>
  45. /// 触发扔掉道具效果, 并不会管道具是否在道具背包中
  46. /// </summary>
  47. /// <param name="master">触发扔掉该道具的的角色</param>
  48. /// <param name="startPosition">投抛起始位置</param>
  49. public void ThrowProp(Role master, Vector2 startPosition)
  50. {
  51. //阴影偏移
  52. ShadowOffset = new Vector2(0, 2);
  53. GlobalRotation = 0;
  54. var startHeight = 8;
  55. Throw(startPosition, startHeight, 0, Vector2.Zero, 0);
  56.  
  57. //继承role的移动速度
  58. InheritVelocity(master);
  59. }
  60. }