From aa8d381cd3265b8b99d27afc33c35f5779f39484 Mon Sep 17 00:00:00 2001 From: chai Date: Sun, 25 Apr 2021 19:09:43 +0800 Subject: -example --- Assets/Scripts/SimpleCameraController.cs | 182 ------------------------------- 1 file changed, 182 deletions(-) delete mode 100644 Assets/Scripts/SimpleCameraController.cs (limited to 'Assets/Scripts/SimpleCameraController.cs') diff --git a/Assets/Scripts/SimpleCameraController.cs b/Assets/Scripts/SimpleCameraController.cs deleted file mode 100644 index cde98a8..0000000 --- a/Assets/Scripts/SimpleCameraController.cs +++ /dev/null @@ -1,182 +0,0 @@ -#if ENABLE_INPUT_SYSTEM && ENABLE_INPUT_SYSTEM_PACKAGE -#define USE_INPUT_SYSTEM - using UnityEngine.InputSystem; - using UnityEngine.InputSystem.Controls; -#endif - -using UnityEngine; - -namespace UnityTemplateProjects -{ - public class SimpleCameraController : MonoBehaviour - { - class CameraState - { - public float yaw; - public float pitch; - public float roll; - public float x; - public float y; - public float z; - - public void SetFromTransform(Transform t) - { - pitch = t.eulerAngles.x; - yaw = t.eulerAngles.y; - roll = t.eulerAngles.z; - x = t.position.x; - y = t.position.y; - z = t.position.z; - } - - public void Translate(Vector3 translation) - { - Vector3 rotatedTranslation = Quaternion.Euler(pitch, yaw, roll) * translation; - - x += rotatedTranslation.x; - y += rotatedTranslation.y; - z += rotatedTranslation.z; - } - - public void LerpTowards(CameraState target, float positionLerpPct, float rotationLerpPct) - { - yaw = Mathf.Lerp(yaw, target.yaw, rotationLerpPct); - pitch = Mathf.Lerp(pitch, target.pitch, rotationLerpPct); - roll = Mathf.Lerp(roll, target.roll, rotationLerpPct); - - x = Mathf.Lerp(x, target.x, positionLerpPct); - y = Mathf.Lerp(y, target.y, positionLerpPct); - z = Mathf.Lerp(z, target.z, positionLerpPct); - } - - public void UpdateTransform(Transform t) - { - t.eulerAngles = new Vector3(pitch, yaw, roll); - t.position = new Vector3(x, y, z); - } - } - - CameraState m_TargetCameraState = new CameraState(); - CameraState m_InterpolatingCameraState = new CameraState(); - - [Header("Movement Settings")] - [Tooltip("Exponential boost factor on translation, controllable by mouse wheel.")] - public float boost = 3.5f; - - [Tooltip("Time it takes to interpolate camera position 99% of the way to the target."), Range(0.001f, 1f)] - public float positionLerpTime = 0.2f; - - [Header("Rotation Settings")] - [Tooltip("X = Change in mouse position.\nY = Multiplicative factor for camera rotation.")] - public AnimationCurve mouseSensitivityCurve = new AnimationCurve(new Keyframe(0f, 0.5f, 0f, 5f), new Keyframe(1f, 2.5f, 0f, 0f)); - - [Tooltip("Time it takes to interpolate camera rotation 99% of the way to the target."), Range(0.001f, 1f)] - public float rotationLerpTime = 0.01f; - - [Tooltip("Whether or not to invert our Y axis for mouse input to rotation.")] - public bool invertY = false; - - void OnEnable() - { - m_TargetCameraState.SetFromTransform(transform); - m_InterpolatingCameraState.SetFromTransform(transform); - } - - Vector3 GetInputTranslationDirection() - { - Vector3 direction = new Vector3(); - if (Input.GetKey(KeyCode.W)) - { - direction += Vector3.forward; - } - if (Input.GetKey(KeyCode.S)) - { - direction += Vector3.back; - } - if (Input.GetKey(KeyCode.A)) - { - direction += Vector3.left; - } - if (Input.GetKey(KeyCode.D)) - { - direction += Vector3.right; - } - if (Input.GetKey(KeyCode.Q)) - { - direction += Vector3.down; - } - if (Input.GetKey(KeyCode.E)) - { - direction += Vector3.up; - } - return direction; - } - - void Update() - { - Vector3 translation = Vector3.zero; - -#if ENABLE_LEGACY_INPUT_MANAGER - - // Exit Sample - if (Input.GetKey(KeyCode.Escape)) - { - Application.Quit(); - #if UNITY_EDITOR - UnityEditor.EditorApplication.isPlaying = false; - #endif - } - // Hide and lock cursor when right mouse button pressed - if (Input.GetMouseButtonDown(1)) - { - Cursor.lockState = CursorLockMode.Locked; - } - - // Unlock and show cursor when right mouse button released - if (Input.GetMouseButtonUp(1)) - { - Cursor.visible = true; - Cursor.lockState = CursorLockMode.None; - } - - // Rotation - if (Input.GetMouseButton(1)) - { - var mouseMovement = new Vector2(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y") * (invertY ? 1 : -1)); - - var mouseSensitivityFactor = mouseSensitivityCurve.Evaluate(mouseMovement.magnitude); - - m_TargetCameraState.yaw += mouseMovement.x * mouseSensitivityFactor; - m_TargetCameraState.pitch += mouseMovement.y * mouseSensitivityFactor; - } - - // Translation - translation = GetInputTranslationDirection() * Time.deltaTime; - - // Speed up movement when shift key held - if (Input.GetKey(KeyCode.LeftShift)) - { - translation *= 10.0f; - } - - // Modify movement by a boost factor (defined in Inspector and modified in play mode through the mouse scroll wheel) - boost += Input.mouseScrollDelta.y * 0.2f; - translation *= Mathf.Pow(2.0f, boost); - -#elif USE_INPUT_SYSTEM - // TODO: make the new input system work -#endif - - m_TargetCameraState.Translate(translation); - - // Framerate-independent interpolation - // Calculate the lerp amount, such that we get 99% of the way to our target in the specified time - var positionLerpPct = 1f - Mathf.Exp((Mathf.Log(1f - 0.99f) / positionLerpTime) * Time.deltaTime); - var rotationLerpPct = 1f - Mathf.Exp((Mathf.Log(1f - 0.99f) / rotationLerpTime) * Time.deltaTime); - m_InterpolatingCameraState.LerpTowards(m_TargetCameraState, positionLerpPct, rotationLerpPct); - - m_InterpolatingCameraState.UpdateTransform(transform); - } - } - -} \ No newline at end of file -- cgit v1.1-26-g67d0