Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / activity / bullet / normal / Arrow.cs
  1.  
  2. using Godot;
  3.  
  4. [Tool]
  5. public partial class Arrow : Bullet, IMountItem
  6. {
  7. [Export, ExportFillNode]
  8. public AnimatedSprite2D HalfSprite { get; set; }
  9. public override void OnPlayDisappearEffect()
  10. {
  11. }
  12.  
  13. public override void OnPlayCollisionEffect(KinematicCollision2D collision)
  14. {
  15. }
  16.  
  17. public override void OnCollisionTarget(IHurt hurt)
  18. {
  19. base.OnCollisionTarget(hurt);
  20. var activityObject = hurt.GetActivityObject();
  21. if (activityObject != null)
  22. {
  23. CallDeferred(nameof(OnBindTarget), activityObject);
  24. }
  25. }
  26.  
  27. public override void LogicalFinish()
  28. {
  29. SetEnableMovement(false);
  30. }
  31.  
  32. private void OnBindTarget(ActivityObject activityObject)
  33. {
  34. Altitude = -activityObject.ToLocal(GlobalPosition).Y;
  35. activityObject.BindMountObject(this);
  36. AnimatedSprite.Play(AnimatorNames.HalfEnd);
  37. HalfSprite.Visible = true;
  38. }
  39.  
  40. public void OnMount(ActivityObject target)
  41. {
  42. Reparent(target);
  43. }
  44.  
  45. public void OnUnmount(ActivityObject target)
  46. {
  47. SetEnableMovement(true);
  48. MoveController.ClearForce();
  49. MoveController.BasisVelocity = Vector2.Zero;
  50. Throw(10, 60, new Vector2(20, 0), 0);
  51. }
  52. }