/// <summary> /// 开启主相机绕指定点旋转 注意:不要设置在有自转的Transform下 /// </summary> /// <param name="cameraRotateCenter">相机对准物体</param> /// <param name="speed"></param> public void StartCameraRotateWithCenter(Transform cameraCenter, float duration = 0.5f) { StopCameraRotateWithCenter(); if (mainCamera == null) { mainCamera = MUtility.MainCamera; } cameraLookToCenter = cameraCenter.gameObject; tween = //朝向开启再旋转 mainCamera.transform.DOLookAt(cameraLookToCenter.transform.position, duration).OnComplete(() => { dragMouseOrbit = new DragMouseOrbit(cameraCenter, mainCamera.transform); EventCameraRotate.AddListener(RotateCameraToCenter); mBehaviour = new MBehaviour(ExecutionPriority.High); mBehaviour.OnUpdate_MBehaviour(() => { RotateCameraToCenter(inputPointPos); }); isRotateCameraWithCenter = true; isRotateCameraWithCenterInitialization = true; RotateAndZoomManager.IsDone_StartCameraAroundCenter_Initialization = true; }); }
/// <summary> /// 相机绕点转的暂停和重启方法 /// </summary> /// <param name="isenable"></param> public void PauseOrRestart_CameraRotateSelf(bool isenable) { if (!isCameraRotateSelfInitialization) { return; } if (isenable) { EventCameraRotate.AddListener(RotateCameraSelf); } else { EventCameraRotate.RemoveListener(RotateCameraSelf); } }
/// <summary> /// 相机绕点转的暂停和重启方法 /// </summary> /// <param name="isenable"></param> public void PauseOrRestart(bool isenable) { if (!isRotateCameraWithCenterInitialization) { return; } if (isenable) { EventCameraRotate.AddListener(RotateCameraToCenter); mBehaviour.IsEnable = true; } else { EventCameraRotate.RemoveListener(RotateCameraToCenter); mBehaviour.IsEnable = false; } }
/// <summary> /// 开启主相机 绕自身轴转 /// </summary> public void StartCameraSelfRotate() { rotateCore = new RotateCore(); if (mainCamera == null) { mainCamera = MUtility.MainCamera; } if (otherHelpCameraSelfRotate == null) { otherHelpCameraSelfRotate = new OtherRotateHelp(cameraSelfRotateXlimits, cameraSelfRotateYlimits, rotateCameraSelfSpeed); } EventCameraRotate.AddListener(RotateCameraSelf); isSelfRotateCameraEnable = true; isCameraRotateSelfInitialization = true; }
public void StartCameraRotateWithCenter(Transform cameraCenter, Vector3 camerainitialpos, Quaternion camerainitialqua, float duration = 0.5f) { StopCameraRotateWithCenter(); if (mainCamera == null) { mainCamera = MUtility.MainCamera; } cameraLookToCenter = cameraCenter.gameObject; //开启初始化相机位置和角度 tween = mainCamera.transform.DOMove(camerainitialpos, duration / 3); mainCamera.transform.DORotate(camerainitialqua.eulerAngles, duration / 3).OnComplete(() => { mainCamera.transform.DOLookAt(cameraCenter.transform.position, duration / 3).OnComplete(() => { dragMouseOrbit = new DragMouseOrbit(cameraCenter, mainCamera.transform); EventCameraRotate.AddListener(RotateCameraToCenter); mBehaviour = new MBehaviour(ExecutionPriority.High); mBehaviour.OnUpdate_MBehaviour(() => { RotateCameraToCenter(inputPointPos); }); isRotateCameraWithCenter = true; isRotateCameraWithCenterInitialization = true; RotateAndZoomManager.IsDone_StartCameraAroundCenter_Initialization = true; }); }); }
void ontest() { gameObject.AddGrabObject(onGrab); gameObject.RemoveGrabObject(onGrab); gameObject.RemoveGrabObjectAll(); gameObject.AddReleaseObject(OnRelease); gameObject.RemoveReleaseObject(OnRelease); gameObject.RemoveReleaseObjectAll(); gameObject.AddRayTargetEnter(OnTargetEnter); gameObject.RemoveRayTargetEnter(OnTargetEnter); gameObject.RemoveRayTargetEnter(); gameObject.AddRayTargetExit(OnTargetExit); gameObject.RemoveRayTargetExit(); gameObject.RemoveRayTargetExit(OnTargetExit); EventHandRay.AddListener(onRay); EventHandRay.RemoveListener(onRay); EventHandRays.AddListener(OnRays); EventHandRays.RemoveListener(OnRays); EventHandStart.AddListener(onstart); EventHandStart.RemoveListener(onstart); EventHandStop.AddListener(onstop); EventHandStop.RemoveListener(onstop); EventHandUIRay.AddListener(onRay); EventHandUIRay.RemoveListener(onRay); EventCameraZoom.AddListener(onzoom); EventCameraZoom.RemoveListener(onzoom); EventCameraRotate.AddListener(onrotate); EventCameraRotate.RemoveListener(onrotate); EventHandGrabObject.AddListener(ongrabobject); EventHandGrabObject.RemoveListener(ongrabobject); EventHandReleaseObject.AddListener(onreleaseobject); EventHandReleaseObject.RemoveListener(onreleaseobject); EventHandGrabObjectKey.AddListener(gameObject, onGrab); EventHandGrabObjectKey.RemoveListener(gameObject, onGrab); EventHandReleaseObjectKey.AddListener(gameObject, OnRelease); EventHandReleaseObjectKey.RemoveListener(gameObject, OnRelease); EventHandRayTarget.AddListener(onraytarget); EventHandRayTarget.RemoveListener(onraytarget); EventHandRayTargetEnter.AddListener(gameObject, OnTargetEnter); EventHandRayTargetEnter.RemoveListener(gameObject, OnTargetEnter); EventHandRayTargetExit.AddListener(gameObject, OnTargetExit); EventHandRayTargetExit.RemoveListener(gameObject, OnTargetExit); EventHandUIRayEnter.AddListener(gameObject, onuienter); EventHandUIRayEnter.RemoveListener(gameObject, onuienter); EventHandUIRayExit.AddListener(gameObject, onuiexit); EventHandUIRayExit.RemoveListener(gameObject, onuiexit); EventHandUIRay.AddListener(onRay); EventHandUIRay.RemoveListener(onRay); }