123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- using DG.Tweening;
- using ET.EventType;
- using FairyGUI;
- using UnityEngine;
- using UnityEngine.Playables;
- namespace ET.Client
- {
- public static class CameraMgr
- {
- public static Camera MainCamera { get; private set; }
- public static void Init()
- {
- MainCamera = Camera.main;
- MainCamera.transform.SetPositionAndRotation(new Vector3(230, 35, -5), Quaternion.Euler(20, 0, 0));
- MainCamera.fieldOfView = 60;
- }
- [Event]
- public class SceneChangeFinishEvent : BEvent<SceneLoadFinish>
- {
- protected override async ETTask OnEvent(SceneLoadFinish a)
- {
- GRoot.inst.RemoveChildren();
- var playable = MainCamera.GetComponent<PlayableDirector>();
- if (playable != null)
- {
- playable.Play();
- playable.stopped += (pd) =>
- {
- EventSystem.Instance.Publish<ShowHUDEvent>();
- GameObject.Destroy(playable);
- var ani = MainCamera.GetComponent<Animator>();
- if(ani != null) GameObject.Destroy(ani);
- };
- }
- else
- {
- Log.Error("Not Found Camera PlayableDirector");
- EventSystem.Instance.Publish<ShowHUDEvent>();
- }
- await ETTask.CompletedTask;
- }
- }
- //相机跟随主角
- public static void FollowMe(Vector3 pos)
- {
- /*var camera = Camera.main;
- pos.x += 7;
- pos.y = 15;
- pos.z -= 25;
- camera.transform.position = pos;*/
- }
- private static bool bShaking = false;
- public static void ShakeMe(float shakeTime, Vector3 shakeStength)
- {
- if (bShaking) return;
- bShaking = true;
- Transform trans = MainCamera.transform;
- var savePos = trans.localPosition;
- Tweener tweener = trans.DOShakePosition(shakeTime, shakeStength);
- tweener.OnComplete<Tweener>(() =>
- {
- trans.localPosition = savePos;
- bShaking = false;
- });
- }
- public static Vector3 CarmeraPos()
- {
- return Camera.main.transform.position;
- }
- public static void DragMe(Vector3 start, Vector3 end, float duration, System.Action endcb)
- {
- Transform trans = MainCamera.transform;
- trans.position = start;
- var tweener = trans.DOMove(end, duration);
- tweener.OnComplete<Tweener>(() =>
- {
- endcb ?.Invoke();
- });
- }
- }
- [Event]
- public class CameraEventHandler : BEvent<CameraEvent>
- {
- protected override async ETTask OnEvent(CameraEvent args)
- {
- var endpos = new Vector3(args.X, args.Y, args.Z);
- float time = (float)args.TimeMS / 1000;
- Transform trans = CameraMgr.MainCamera.transform;
- if (args.MoveSpeedSec > 0.0001 && time < 0.01)
- {
- var dis = Vector3.Distance(trans.position, endpos);
- time = dis / args.MoveSpeedSec;
- }
- trans.DOMove(endpos, time);
- await ETTask.CompletedTask;
- }
- }
- }
|