private void ChangeCameraMode() { if (playerCameraMode == MyEnum.PlayerCameraMode.Roaming) { playerCameraMode = MyEnum.PlayerCameraMode.Fight; cinemachineRoamingCamera.m_XAxis.m_AccelTime = 0f; cinemachineRoamingCamera.m_XAxis.m_DecelTime = 0f; Vector3 offset = cinemachineRoamingCamera.State.RawPosition - cinemachineRoamingCamera.Follow.position; offset.y = 0; float value = Vector3.SignedAngle(Vector3.back, offset, Vector3.up); cinemachineRoamingCamera.m_BindingMode = Cinemachine.CinemachineTransposer.BindingMode.WorldSpace; cinemachineRoamingCamera.UpdateCameraState(Vector3.up, -1); cinemachineRoamingCamera.m_XAxis.Value = value; } else { playerCameraMode = MyEnum.PlayerCameraMode.Roaming; cinemachineRoamingCamera.m_XAxis.m_AccelTime = 0.1f; cinemachineRoamingCamera.m_XAxis.m_DecelTime = 0.1f; cinemachineRoamingCamera.m_BindingMode = Cinemachine.CinemachineTransposer.BindingMode.SimpleFollowWithWorldUp; cinemachineRoamingCamera.UpdateCameraState(Vector3.up, -1); cinemachineRoamingCamera.m_XAxis.Value = 0; } cinemachineRoamingCamera.PreviousStateIsValid = false; }
void Start() { characterController = GetComponent <CharacterController>(); movementSpeed = 5.0f; rotationSpeed = 5.0f; if (!currentCamera) { Camera[] cameraList = FindObjectsOfType <Camera>(); if (cameraList.Length > 0) { currentCamera = cameraList[0]; } } playerCameraMode = MyEnum.PlayerCameraMode.Roaming; cameraLerp = 1f; }