public void SetCameraLocation(int type, LuaFunction callback) { _CtrlType = type; if (_CtrlType == 1) { if (LookAtTarget == null) { Common.HobaDebuger.LogError("the 'hang_point' object cant be found in Host Player."); return; } if (_CurStage == MoveStage.MOVING_NEAR) { return; } if (_CurStage == MoveStage.MOVING_FAR) { _CameraTrans.DOKill(); } CamMoveNear(callback); } else if (_CtrlType == 2) { if (_CurStage == MoveStage.MOVING_FAR) { return; } if (_CurStage == MoveStage.MOVING_NEAR) { _CameraTrans.DOKill(); } _CurTargetPos = GetRealLookPos(CCamCtrlMan.Instance.GetGameCamCtrl().GetHeightOffset()); var dest_pos = CCamCtrlMan.Instance.GetGameCamCtrl().GetCamCurPos(); //根据当前跟随相机的位置参数获取相机回正的原始位置 Vector3 game_cam_pos = GetCamPosAfterCollionFix(dest_pos); var followTargetPos = CCamCtrlMan.Instance.GetLookAtPosOfGameModel(); _CameraTrans.DOMove(game_cam_pos, CAMERA_OUT_DURATION).SetEase(Ease.OutCirc).OnUpdate(() => { UpdateHostPlayerIsNeedHide(); _CameraTrans.LookAt(_CurTargetPos, Vector3.up); }).OnComplete(() => { _Type = ExteriorType.NONE; if (callback != null) { callback.Call(); callback.Release(); } _CurStage = MoveStage.NONE; }); _CurStage = MoveStage.MOVING_FAR; } }
private void CamMoveNear(LuaFunction callback = null) { _CurStage = MoveStage.MOVING_NEAR; SetDegAndDistance(_Params.x, _Params.y, _Params.z, _Params.w); _CurTargetPos = GetRealLookPos(_HeightOffset); var dest_point = _CurTargetPos - _RealDir * _DistOffset; dest_point = GetCamPosAfterCollionFix(dest_point); _CameraTrans.DOMove(dest_point, CAMERA_IN_DURATION).SetEase(Ease.OutCirc).OnUpdate(() => { UpdateHostPlayerIsNeedHide(); _CameraTrans.LookAt(_CurTargetPos); }).OnComplete(() => { if (callback != null) { callback.Call(); callback.Release(); } _CurHeightOffset = _CurTargetPos.y - LookAtTarget.position.y; _RealPos = _CameraTrans.position; _CamTraceResult = CameraTraceResult.NoHit; _CurStage = MoveStage.LOOKING_AT; }); }
private void DoStage(MoveStage stage) { _target .DOMove(stage.To, stage.Duration, false) .SetEase(stage.MovingCurve) .SetEase(stage.MovingEase) .OnComplete(stage.Moved.Invoke); }
public void DoStage(int num) { if (_stages.Count <= num) { return; } MoveStage stage = _stages[num]; DoStage(stage); }
private void StopStage() { if (_CurStage != MoveStage.NONE) { if (_CurStage != MoveStage.LOOKING_AT) { if (_CameraTrans) { _CameraTrans.DOKill(); } if (MainCamera != null) { MainCamera.DOKill(); } } if (MainCamera != null) { MainCamera.fieldOfView = _OriginalFOV; } _CurStage = MoveStage.NONE; } }
protected void DoCamMove(bool bMoveNear, Vector3 camDesPos, float desHeightOffset, float desFOV, LuaFunction callback) { if (bMoveNear) { // 相机拉进 if (_CurStage == MoveStage.MOVING_NEAR) { return; } if (_CurStage == MoveStage.MOVING_FAR) { _CameraTrans.DOKill(); } _CurStage = MoveStage.MOVING_NEAR; float origin_height_offset = _CurHeightOffset; float duration = CAMERA_IN_DURATION; Main.Main3DCamera.DOFieldOfView(desFOV, duration).SetEase(Ease.Linear); _CameraTrans.DOMove(camDesPos, duration).SetEase(Ease.Linear).OnUpdate(() => { // 更新视点高度 float height_delta = GetDelta(origin_height_offset, desHeightOffset, duration); if (Mathf.Abs(_CurHeightOffset - desHeightOffset) > height_delta) { _CurHeightOffset += height_delta; } else { _CurHeightOffset = desHeightOffset; } _CameraTrans.LookAt(GetRealLookAtPos(_CurHeightOffset), Vector3.up); UpdateHostPlayerIsNeedHide(); }).OnComplete(() => { _CurHeightOffset = _HeightOffsetDest = desHeightOffset; _CurStage = MoveStage.LOOKING_AT; if (_IsEnterNearCam) { EnableLookIK(true); _IsEnterNearCam = false; } if (callback != null) { callback.Call(); callback.Release(); } }); } else { // 相机拉远 if (_CurStage == MoveStage.MOVING_FAR) { return; } if (_CurStage == MoveStage.MOVING_NEAR) { _CameraTrans.DOKill(); } _CurStage = MoveStage.MOVING_FAR; float origin_height_offset = _CurHeightOffset; float duration = CAMERA_OUT_DURATION; Main.Main3DCamera.DOFieldOfView(desFOV, duration).SetEase(Ease.Linear); _CameraTrans.DOMove(camDesPos, duration).SetEase(Ease.Linear).OnUpdate(() => { // 更新视点高度 float height_delta = GetDelta(origin_height_offset, desHeightOffset, duration); if (Mathf.Abs(_CurHeightOffset - desHeightOffset) > height_delta) { _CurHeightOffset += height_delta; } else { _CurHeightOffset = desHeightOffset; } _CameraTrans.LookAt(GetRealLookAtPos(_CurHeightOffset), Vector3.up); UpdateHostPlayerIsNeedHide(); }).OnComplete(() => { _CurHeightOffset = _HeightOffsetDest = desHeightOffset; _CurStage = MoveStage.LOOKING_AT; if (_IsQuitNearCam) { CCamCtrlMan.Instance.SetCurCamCtrl(CAM_CTRL_MODE.GAME, false); _CurStage = MoveStage.NONE; } if (callback != null) { callback.Call(); callback.Release(); } }); } }
public void SetCameraLocation(GameObject target, int type, LuaFunction callback) { if (_CameraTrans == null) { return; } _Target = target; _CtrlType = type; if (_CtrlType == 1) { if (_CurStage != MoveStage.NONE) { return; } //if (_CurStage == MoveStage.MOVING_FAR) //{ // _CameraTrans.DOKill(); // if (MainCamera != null) // { // MainCamera.DOKill(); // } //} _CurStage = MoveStage.MOVING_NEAR; Transform trans_target = _Target.transform; Vector3 dest_pos; Vector3 dest_rot; if (_IsOverwriteLocation) { _IsOverwriteLocation = false; dest_pos = trans_target.position + trans_target.TransformDirection(new Vector3(_OwPos.x, 0, _OwPos.z)); dest_pos.y += _OwPos.y; dest_rot = trans_target.eulerAngles + _OwRot; } else { Vector3 trans_forward = trans_target.forward; trans_forward.y = 0; dest_pos = trans_target.position + trans_forward * 3 + DELTA_POS; dest_rot = trans_target.eulerAngles + DELTA_ROT; } if (MainCamera != null) { _OriginalFOV = MainCamera.fieldOfView; MainCamera.DOFieldOfView(_EndFOV, CAMERA_IN_DURATION); } _CameraTrans.DORotate(dest_rot, CAMERA_IN_DURATION).SetEase(Ease.OutCirc); _CameraTrans.DOMove(dest_pos, CAMERA_IN_DURATION).SetEase(Ease.OutCirc).OnComplete(() => { DynamicEffectManager.Instance.EnableDepthOfField(true, DOF_DISTANCE, DOF_RANGE, DOF_BOKEH); //开启模糊效果 if (callback != null) { callback.Call(); callback.Release(); } _CurStage = MoveStage.LOOKING_AT; }); } else { Common.HobaDebuger.LogDebug("CDugeonEndCam Error Type"); } }
public void SetCameraLocation(GameObject target, int type, LuaFunction callback) { if (_CameraTrans == null) { return; } _Target = target; _CtrlType = type; if (_CtrlType == 1) { if (_CurStage == MoveStage.MOVING_NEAR) { return; } if (_CurStage == MoveStage.MOVING_FAR) { _CameraTrans.DOKill(); if (MainCamera != null) { MainCamera.DOKill(); } } //get hang point GetHangPoint(_Target, ref _NpcCamPos, ref _NpcCamLookAt); if (_NpcCamPos == null || _NpcCamLookAt == null) { Debug.LogWarning("Npc Dialog [Camera Joint not Found!!!] At " + _Target.name); _NpcCamPos = new GameObject("Pos").transform; _NpcCamLookAt = new GameObject("LookAt").transform; Transform target_T = _Target.transform; _NpcCamPos.SetParent(target_T, false); _NpcCamLookAt.SetParent(target_T, false); } _CurStage = MoveStage.MOVING_NEAR; Vector3 dest_point = _NpcCamPos.position; _OriginPos = _CameraTrans.position; _OriginLookAtPos = CCamCtrlMan.Instance.GetLookAtPosOfGameModel(); _OriginalFOV = MainCamera.fieldOfView; _CameraTrans.DOMove(dest_point, CAMERA_IN_DURATION).SetEase(Ease.OutCirc).OnUpdate(() => { _CameraTrans.LookAt(_NpcCamLookAt); }).OnComplete(() => { DynamicEffectManager.Instance.EnableDepthOfField(true, DOF_DISTANCE, DOF_RANGE, DOF_BOKEH); if (MainCamera != null) { MainCamera.nearClipPlane = CAMERA_CULL_NEAR_IN; } if (callback != null) { callback.Call(); callback.Release(); } _CurStage = MoveStage.LOOKING_AT; }); if (MainCamera != null) { MainCamera.DOFieldOfView(CAMERA_IN_FOV, CAMERA_OUT_DURATION); } } else if (_CtrlType == 2) { if (_CurStage == MoveStage.MOVING_FAR) { return; } if (_CurStage == MoveStage.MOVING_NEAR) { _CameraTrans.DOKill(); MainCamera.DOKill(); } _CameraTrans.DOMove(_OriginPos, CAMERA_OUT_DURATION).SetEase(Ease.OutCirc).OnUpdate(() => { _CameraTrans.LookAt(_OriginLookAtPos, Vector3.up); }).OnComplete(() => { DynamicEffectManager.Instance.EnableDepthOfField(false, DOF_DISTANCE, DOF_RANGE, DOF_BOKEH); if (MainCamera != null) { MainCamera.nearClipPlane = CAMERA_CULL_NEAR_OUT; } if (callback != null) { callback.Call(); callback.Release(); } _CurStage = MoveStage.NONE; }); if (MainCamera != null) { MainCamera.DOFieldOfView(_OriginalFOV, CAMERA_OUT_DURATION); } _CurStage = MoveStage.MOVING_FAR; } }