Newer
Older
DungeonShooting / src / Cursor.cs
@小李xl 小李xl on 17 May 2022 1 KB 目录结构更改
  1. using Godot;
  2.  
  3. /// <summary>
  4. /// 鼠标指针
  5. /// </summary>
  6. public class Cursor : Node2D
  7. {
  8.  
  9. public Gun TargetGun = null;
  10.  
  11. private Sprite lt;
  12. private Sprite lb;
  13. private Sprite rt;
  14. private Sprite rb;
  15.  
  16. public override void _Ready()
  17. {
  18. lt = GetNode<Sprite>("LT");
  19. lb = GetNode<Sprite>("LB");
  20. rt = GetNode<Sprite>("RT");
  21. rb = GetNode<Sprite>("RB");
  22. }
  23.  
  24. public override void _Process(float delta)
  25. {
  26. if (TargetGun != null)
  27. {
  28. SetScope(TargetGun.CurrScatteringRange);
  29. }
  30. else
  31. {
  32. SetScope(0);
  33. }
  34. SetCursorPos();
  35. }
  36.  
  37. private void SetScope(float scope)
  38. {
  39. if (TargetGun != null)
  40. {
  41. var len = GlobalPosition.DistanceTo(TargetGun.GlobalPosition);
  42. if (TargetGun.Attribute != null)
  43. {
  44. len = Mathf.Max(0, len - TargetGun.Attribute.BarrelLength);
  45. }
  46. scope = len / GameConfig.ScatteringDistance * scope;
  47. }
  48. lt.Position = new Vector2(-scope, -scope);
  49. lb.Position = new Vector2(-scope, scope);
  50. rt.Position = new Vector2(scope, -scope);
  51. rb.Position = new Vector2(scope, scope);
  52. }
  53.  
  54. private void SetCursorPos()
  55. {
  56. Position = GetGlobalMousePosition();
  57. }
  58. }