123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- using UnityEngine;
- namespace VLB_Samples
- {
- public class FreeCameraController : MonoBehaviour
- {
- public float cameraSensitivity = 90;
- public float speedNormal = 10;
- public float speedFactorSlow = 0.25f;
- public float speedFactorFast = 3;
- public float speedClimb = 4;
- float rotationH = 0.0f;
- float rotationV = 0.0f;
- bool m_UseMouseView = true;
- bool useMouseView
- {
- get { return m_UseMouseView; }
- set
- {
- m_UseMouseView = value;
- Cursor.lockState = value ? CursorLockMode.Locked : CursorLockMode.None;
- Cursor.visible = !value;
- }
- }
- void Start()
- {
- useMouseView = true;
- var euler = transform.rotation.eulerAngles;
- rotationH = euler.y;
- rotationV = euler.x;
- if (rotationV > 180f)
- rotationV -= 360f;
- }
- void Update()
- {
- if (useMouseView)
- {
- rotationH += Input.GetAxis("Mouse X") * cameraSensitivity * Time.deltaTime;
- rotationV -= Input.GetAxis("Mouse Y") * cameraSensitivity * Time.deltaTime;
- }
- rotationV = Mathf.Clamp(rotationV, -90, 90);
- transform.rotation = Quaternion.AngleAxis(rotationH, Vector3.up);
- transform.rotation *= Quaternion.AngleAxis(rotationV, Vector3.right);
- var speed = speedNormal;
- if (Input.GetKey(KeyCode.LeftShift) || Input.GetKey(KeyCode.RightShift)) speed *= speedFactorFast;
- else if (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl)) speed *= speedFactorSlow;
- transform.position += transform.forward * speed * Input.GetAxis("Vertical") * Time.deltaTime;
- transform.position += transform.right * speed * Input.GetAxis("Horizontal") * Time.deltaTime;
- if (Input.GetKey(KeyCode.Q)) { transform.position += Vector3.up * speedClimb * Time.deltaTime; }
- if (Input.GetKey(KeyCode.E)) { transform.position += Vector3.down * speedClimb * Time.deltaTime; }
- if (
- #if !UNITY_EDITOR
- Input.GetMouseButtonDown(0) ||
- #endif
- Input.GetMouseButtonDown(1) || Input.GetMouseButtonDown(2))
- useMouseView = !useMouseView;
- if (Input.GetKeyDown(KeyCode.Escape))
- useMouseView = false;
- }
- }
- }
|