Newer
Older
DungeonShooting / src / weapon / shell / ThrowShell.cs
@小李xl 小李xl on 27 Jun 2022 933 bytes 玩家拾起地上的武器
  1. using Godot;
  2.  
  3. /// <summary>
  4. /// 弹壳
  5. /// </summary>
  6. public class ThrowShell : ThrowNode
  7. {
  8.  
  9. public override void _Ready()
  10. {
  11. base._Ready();
  12. ZIndex = 2;
  13. }
  14.  
  15. protected override void OnOver()
  16. {
  17. //如果落地高度不够低, 再抛一次
  18. if (StartYSpeed > 1)
  19. {
  20. InitThrow(Size, GlobalPosition, 0, Direction, XSpeed * 0.8f, StartYSpeed * 0.5f, RotateSpeed * 0.5f, null);
  21. }
  22. else
  23. {
  24. GetParent().RemoveChild(this);
  25. RoomManager.Current.ObjectRoot.AddChild(this);
  26. //等待被销毁
  27. AwaitDestroy();
  28. }
  29. }
  30.  
  31. private async void AwaitDestroy()
  32. {
  33. CollisionShape.Disabled = true;
  34. //60秒后销毁
  35. await ToSignal(GetTree().CreateTimer(60), "timeout");
  36. QueueFree();
  37. }
  38.  
  39. protected override void OnMaxHeight(float height)
  40. {
  41. ZIndex = 0;
  42. }
  43. }