public void SwitchToFirstPersonView() { CameraMotor activeMotor = m_cameraController.ActiveMotor; if (activeMotor.Name == "1st Person View") { return; } m_enableChangeCameraMode = false; //m_FPSControllerTrans.gameObject.SetActive(true); //if (m_targetTrans.parent != m_FPSControllerTrans.parent) //{ // m_targetTrans.SetParent(m_FPSControllerTrans.parent, true); //} Vector3 targetPos = m_targetTrans.localPosition; m_targetTrans.position = m_cameraController.transform.localPosition; m_targetTrans.rotation = m_cameraController.transform.localRotation; m_tweenerToFPV = m_targetTrans.DOLocalMove(m_cameraController.transform.localPosition, m_tweenTime); Vector3 ro = m_targetTrans.eulerAngles; ro.x = ro.z = 0; Quaternion targetRot = m_targetTrans.localRotation; //m_targetTrans.DOLocalRotateQuaternion(targetRot, m_tweenTime); m_targetTrans.DOLocalRotate(ro /*targetRot.eulerAngles*/, m_tweenTime, RotateMode.Fast); //TransitionMotor transMotor = m_cameraController.GetMotor<TransitionMotor>("Targeting Out"); //m_cameraController.ActivateMotor(transMotor); //m_cameraController.AnchorOffset = new Vector3(0.0f, 1.8f, 0.0f); DOTween.To(() => m_cameraController.AnchorOffset, x => m_cameraController.AnchorOffset = x, new Vector3(0.0f, 0, 0.0f), m_tweenTime); CameraMotor motor = m_cameraController.GetMotor <CameraMotor>("1st Person View"); motor.IsEnabled = true; m_cameraController.ActivateMotor(motor); // 动画开始时禁用相机控制 motor.IsEnabled = false; // 启用通过FOV实现的缩放 m_cameraController.IsZoomEnabled = true; m_tweenerToFPV.OnComplete(OnSwitchedToFirstPersonView); }
void DoActivateMotor() { var go = Fsm.GetOwnerDefaultTarget(gameObject); script = go.GetComponent <CameraController>(); CameraMotor motor = script.GetMotor(modeToActivate.Value); script.ActivateMotor(motor); return; }