コード例 #1
0
ファイル: CUIExteriorCam.cs プロジェクト: frozen4/UnityPlus
    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;
        }
    }
コード例 #2
0
ファイル: CUIExteriorCam.cs プロジェクト: frozen4/UnityPlus
    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;
        });
    }
コード例 #3
0
 private void DoStage(MoveStage stage)
 {
     _target
     .DOMove(stage.To, stage.Duration, false)
     .SetEase(stage.MovingCurve)
     .SetEase(stage.MovingEase)
     .OnComplete(stage.Moved.Invoke);
 }
コード例 #4
0
    public void DoStage(int num)
    {
        if (_stages.Count <= num)
        {
            return;
        }
        MoveStage stage = _stages[num];

        DoStage(stage);
    }
コード例 #5
0
ファイル: CDungeonEndCam.cs プロジェクト: frozen4/UnityPlus
    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;
        }
    }
コード例 #6
0
ファイル: CPlayerNearCam.cs プロジェクト: frozen4/UnityPlus
    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();
                }
            });
        }
    }
コード例 #7
0
ファイル: CDungeonEndCam.cs プロジェクト: frozen4/UnityPlus
    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");
        }
    }
コード例 #8
0
ファイル: CNpcDialogueCam.cs プロジェクト: frozen4/UnityPlus
    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;
        }
    }