CameraMgr.cs 2.4 KB

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