CameraMgr.cs 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using DG.Tweening;
  2. using ET.EventType;
  3. using UnityEngine;
  4. namespace ET.Client
  5. {
  6. public static class CameraMgr
  7. {
  8. public static void Init()
  9. {
  10. var camera = GlobalViewMgr.Instance.BattleCamera;
  11. camera.transform.SetPositionAndRotation(new Vector3(70, 50, 0), Quaternion.Euler(35, 0, 0));
  12. camera.fieldOfView = 60;
  13. }
  14. //相机跟随主角
  15. public static void FollowMe(Vector3 pos)
  16. {
  17. /*var camera = Camera.main;
  18. pos.x += 7;
  19. pos.y = 15;
  20. pos.z -= 25;
  21. camera.transform.position = pos;*/
  22. }
  23. private static bool bShaking = false;
  24. public static void ShakeMe(float shakeTime, Vector3 shakeStength)
  25. {
  26. if (bShaking) return;
  27. bShaking = true;
  28. Transform trans = GlobalViewMgr.Instance.BattleCamera.transform;
  29. var savePos = trans.localPosition;
  30. Tweener tweener = trans.DOShakePosition(shakeTime, shakeStength);
  31. tweener.OnComplete<Tweener>(() =>
  32. {
  33. trans.localPosition = savePos;
  34. bShaking = false;
  35. });
  36. }
  37. public static Vector3 CarmeraPos()
  38. {
  39. return Camera.main.transform.position;
  40. }
  41. public static void DragMe(Vector3 start, Vector3 end, float duration, System.Action endcb)
  42. {
  43. Transform trans = GlobalViewMgr.Instance.BattleCamera.transform;
  44. trans.position = start;
  45. var tweener = trans.DOMove(end, duration);
  46. tweener.OnComplete<Tweener>(() =>
  47. {
  48. endcb ?.Invoke();
  49. });
  50. }
  51. }
  52. [Event]
  53. public class CameraEventHandler : BEvent<CameraEvent>
  54. {
  55. protected override async ETTask OnEvent(CameraEvent args)
  56. {
  57. var endpos = new Vector3(args.X, args.Y, args.Z);
  58. float time = (float)args.TimeMS / 1000;
  59. Transform trans = GlobalViewMgr.Instance.BattleCamera.transform;
  60. if (args.MoveSpeedSec > 0.0001 && time < 0.01)
  61. {
  62. var dis = Vector3.Distance(trans.position, endpos);
  63. time = dis / args.MoveSpeedSec;
  64. }
  65. trans.DOMove(endpos, time);
  66. await ETTask.CompletedTask;
  67. }
  68. }
  69. }