diff options
Diffstat (limited to 'examples/UnityExample/Assets/Scripts/FreeCamera.cs')
| -rw-r--r-- | examples/UnityExample/Assets/Scripts/FreeCamera.cs | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/examples/UnityExample/Assets/Scripts/FreeCamera.cs b/examples/UnityExample/Assets/Scripts/FreeCamera.cs new file mode 100644 index 0000000..1e9fd67 --- /dev/null +++ b/examples/UnityExample/Assets/Scripts/FreeCamera.cs @@ -0,0 +1,61 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class FreeCamera : MonoBehaviour +{ + public float cameraSensitivity = 90; + public float climbSpeed = 4; + public float normalMoveSpeed = 10; + public float slowMoveFactor = 0.25f; + public float fastMoveFactor = 3; + + private float rotationX = 0.0f; + private float rotationY = 0.0f; + + void Start() + { + Cursor.lockState = CursorLockMode.Confined; + rotationX = transform.localRotation.eulerAngles.y; + rotationY = -transform.localRotation.eulerAngles.x; + } + + void Update() + { + if(!Input.GetMouseButton(1)) + { + return; + } + + rotationX += Input.GetAxis("Mouse X") * cameraSensitivity * Time.deltaTime; + rotationY += Input.GetAxis("Mouse Y") * cameraSensitivity * Time.deltaTime; + rotationY = Mathf.Clamp(rotationY, -90, 90); + + transform.localRotation = Quaternion.AngleAxis(rotationX, Vector3.up); + transform.localRotation *= Quaternion.AngleAxis(rotationY, Vector3.left); + + if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)) + { + transform.position += transform.forward * (normalMoveSpeed * fastMoveFactor) * Input.GetAxis("Vertical") * Time.deltaTime; + transform.position += transform.right * (normalMoveSpeed * fastMoveFactor) * Input.GetAxis("Horizontal") * Time.deltaTime; + } + else if (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl)) + { + transform.position += transform.forward * (normalMoveSpeed * slowMoveFactor) * Input.GetAxis("Vertical") * Time.deltaTime; + transform.position += transform.right * (normalMoveSpeed * slowMoveFactor) * Input.GetAxis("Horizontal") * Time.deltaTime; + } + else + { + transform.position += transform.forward * normalMoveSpeed * Input.GetAxis("Vertical") * Time.deltaTime; + transform.position += transform.right * normalMoveSpeed * Input.GetAxis("Horizontal") * Time.deltaTime; + } + + if (Input.GetKey(KeyCode.Q)) { transform.position -= transform.up * climbSpeed * Time.deltaTime; } + if (Input.GetKey(KeyCode.E)) { transform.position += transform.up * climbSpeed * Time.deltaTime; } + + //if (Input.GetKeyDown(KeyCode.End)) + //{ + // Cursor.lockState = (Cursor.lockState == CursorLockMode.Confined) ? CursorLockMode.None : CursorLockMode.Confined; + //} + } +} |