private static void DrawFreeLookGizmos(CinemachineFreeLook vcam, GizmoType selectionType) { // Standard frustum and logo CinemachineVirtualCameraBaseEditor.DrawVirtualCameraBaseGizmos(vcam, selectionType); Color originalGizmoColour = Gizmos.color; bool isActiveVirtualCam = CinemachineCore.Instance.IsLive(vcam); Gizmos.color = isActiveVirtualCam ? CinemachineSettings.CinemachineCoreSettings.ActiveGizmoColour : CinemachineSettings.CinemachineCoreSettings.InactiveGizmoColour; if (vcam.Follow != null) { Vector3 pos = vcam.Follow.position; var TopRig = vcam.GetRig(0).GetCinemachineComponent <CinemachineOrbitalTransposer>(); var MiddleRig = vcam.GetRig(1).GetCinemachineComponent <CinemachineOrbitalTransposer>(); var BottomRig = vcam.GetRig(2).GetCinemachineComponent <CinemachineOrbitalTransposer>(); DrawCircleAtPointWithRadius(pos + Vector3.up * TopRig.m_HeightOffset, TopRig.m_Radius, vcam); DrawCircleAtPointWithRadius(pos + Vector3.up * MiddleRig.m_HeightOffset, MiddleRig.m_Radius, vcam); DrawCircleAtPointWithRadius(pos + Vector3.up * BottomRig.m_HeightOffset, BottomRig.m_Radius, vcam); DrawCameraPath(pos, vcam); } Gizmos.color = originalGizmoColour; }
private void UpdateCamera() { if (playerCameraMode == MyEnum.PlayerCameraMode.Roaming) { if (cameraLerp < 1f) { cameraLerp += Time.deltaTime * 3f; cinemachineRoamingCamera.GetRig(1).GetCinemachineComponent <Cinemachine.CinemachineComposer>().m_TrackedObjectOffset.x = Mathf.Lerp(0f, 0.4f, cameraLerp); cinemachineRoamingCamera.GetRig(1).GetCinemachineComponent <Cinemachine.CinemachineComposer>().m_TrackedObjectOffset.y = Mathf.Lerp(0f, 0.5f, cameraLerp); cinemachineRoamingCamera.GetRig(1).GetCinemachineComponent <Cinemachine.CinemachineComposer>().m_TrackedObjectOffset.z = Mathf.Lerp(0f, 0.2f, cameraLerp); cinemachineRoamingCamera.GetRig(2).GetCinemachineComponent <Cinemachine.CinemachineComposer>().m_TrackedObjectOffset.x = Mathf.Lerp(0f, 0.4f, cameraLerp); cinemachineRoamingCamera.GetRig(2).GetCinemachineComponent <Cinemachine.CinemachineComposer>().m_TrackedObjectOffset.y = Mathf.Lerp(0f, 0.5f, cameraLerp); } } else { if (cameraLerp > 0f) { cameraLerp -= Time.deltaTime * 3f; cinemachineRoamingCamera.GetRig(1).GetCinemachineComponent <Cinemachine.CinemachineComposer>().m_TrackedObjectOffset.x = Mathf.Lerp(0f, 0.4f, cameraLerp); cinemachineRoamingCamera.GetRig(1).GetCinemachineComponent <Cinemachine.CinemachineComposer>().m_TrackedObjectOffset.y = Mathf.Lerp(0f, 0.5f, cameraLerp); cinemachineRoamingCamera.GetRig(1).GetCinemachineComponent <Cinemachine.CinemachineComposer>().m_TrackedObjectOffset.z = Mathf.Lerp(0f, 0.2f, cameraLerp); cinemachineRoamingCamera.GetRig(2).GetCinemachineComponent <Cinemachine.CinemachineComposer>().m_TrackedObjectOffset.x = Mathf.Lerp(0f, 0.4f, cameraLerp); cinemachineRoamingCamera.GetRig(2).GetCinemachineComponent <Cinemachine.CinemachineComposer>().m_TrackedObjectOffset.y = Mathf.Lerp(0f, 0.5f, cameraLerp); } } }
public override void Attached() { if (entity.IsOwner) { cam = GetComponent <Cinemachine.CinemachineFreeLook>(); rig0 = cam.GetRig(0).GetCinemachineComponent <CinemachineBasicMultiChannelPerlin>(); rig1 = cam.GetRig(1).GetCinemachineComponent <CinemachineBasicMultiChannelPerlin>(); rig2 = cam.GetRig(2).GetCinemachineComponent <CinemachineBasicMultiChannelPerlin>(); } }
void Start() { freelookCamera = GetComponent <Cinemachine.CinemachineFreeLook>(); startHighOffset = (freelookCamera.GetRig(0).GetCinemachineComponent <CinemachineComposer>()).m_TrackedObjectOffset; startMidOffset = (freelookCamera.GetRig(1).GetCinemachineComponent <CinemachineComposer>()).m_TrackedObjectOffset; startLowOffset = (freelookCamera.GetRig(2).GetCinemachineComponent <CinemachineComposer>()).m_TrackedObjectOffset; // Ugly shit due to camera prefab being shitty cameraXAdjuster = 0.4f; cameraYAdjuster = 0.4f; notGroundedAttenuationFactor = 0.33f; lerpTendToMiddleRigSpeed = 0.85f; /////////////////////////////////////////////////// }
private static void DrawFreeLookGizmos(CinemachineFreeLook vcam, GizmoType selectionType) { // Standard frustum and logo CinemachineVirtualCameraBaseEditor.DrawVirtualCameraBaseGizmos(vcam, selectionType); Color originalGizmoColour = Gizmos.color; bool isActiveVirtualCam = CinemachineCore.Instance.IsLive(vcam); Gizmos.color = isActiveVirtualCam ? CinemachineSettings.CinemachineCoreSettings.ActiveGizmoColour : CinemachineSettings.CinemachineCoreSettings.InactiveGizmoColour; if (vcam.Follow != null) { Vector3 pos = vcam.Follow.position; var TopRig = vcam.GetRig(0).GetCinemachineComponent <CinemachineOrbitalTransposer>(); var MiddleRig = vcam.GetRig(1).GetCinemachineComponent <CinemachineOrbitalTransposer>(); var BottomRig = vcam.GetRig(2).GetCinemachineComponent <CinemachineOrbitalTransposer>(); Vector3 up = Vector3.up; CinemachineBrain brain = CinemachineCore.Instance.FindPotentialTargetBrain(vcam); if (brain != null) { up = brain.DefaultWorldUp; } Quaternion orient = TopRig.GetReferenceOrientation(up); up = orient * Vector3.up; float rotation = vcam.m_XAxis.Value + vcam.m_Heading.m_HeadingBias; orient = Quaternion.AngleAxis(rotation, up) * orient; CinemachineOrbitalTransposerEditor.DrawCircleAtPointWithRadius( pos + up * TopRig.m_FollowOffset.y, orient, TopRig.m_FollowOffset.z); CinemachineOrbitalTransposerEditor.DrawCircleAtPointWithRadius( pos + up * MiddleRig.m_FollowOffset.y, orient, MiddleRig.m_FollowOffset.z); CinemachineOrbitalTransposerEditor.DrawCircleAtPointWithRadius( pos + up * BottomRig.m_FollowOffset.y, orient, BottomRig.m_FollowOffset.z); DrawCameraPath(pos, orient, vcam); } Gizmos.color = originalGizmoColour; }