Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / activity / prop / Prop.cs
  1.  
  2. using Godot;
  3.  
  4. /// <summary>
  5. /// 道具基类
  6. /// </summary>
  7. public abstract partial class Prop : 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. /// <summary>
  25. /// 如果道具放入了角色背包中, 则每帧调用
  26. /// </summary>
  27. public virtual void PackProcess(float delta)
  28. {
  29. }
  30.  
  31. /// <summary>
  32. /// 触发扔掉道具效果, 并不会管道具是否在道具背包中
  33. /// </summary>
  34. /// <param name="master">触发扔掉该道具的的角色</param>
  35. public void ThrowProp(Role master)
  36. {
  37. ThrowProp(master, master.GlobalPosition);
  38. }
  39. /// <summary>
  40. /// 触发扔掉道具效果, 并不会管道具是否在道具背包中
  41. /// </summary>
  42. /// <param name="master">触发扔掉该道具的的角色</param>
  43. /// <param name="startPosition">投抛起始位置</param>
  44. public void ThrowProp(Role master, Vector2 startPosition)
  45. {
  46. //阴影偏移
  47. ShadowOffset = new Vector2(0, 2);
  48. GlobalRotation = 0;
  49. var startHeight = 8;
  50. Throw(startPosition, startHeight, 0, Vector2.Zero, 0);
  51.  
  52. //继承role的移动速度
  53. InheritVelocity(master);
  54. }
  55. }