using UnityEngine; namespace HPJ.Examples { /// /// A Example Camera Controller for the example scenes /// public class CameraController : MonoBehaviour { public float lookSpeed = 5f; public float moveSpeed = 5f; public float sprintSpeedMultiplier = 2f; public float elevationSpeed = 3f; public bool LockCurser = true; public bool UseLockCommands = true; private float rotationX = 0f; private float rotationY = 0f; private void Awake() { Application.targetFrameRate = 300; } void Start() { if (LockCurser) { Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; } rotationX = transform.rotation.eulerAngles.x; rotationY = transform.parent.rotation.eulerAngles.y; } void Update() { float mouseX = Input.GetAxis("Mouse X") * lookSpeed; float mouseY = -Input.GetAxis("Mouse Y") * lookSpeed; if (!Input.GetKey(KeyCode.LeftControl)) { rotationX += mouseY; rotationY += mouseX; rotationX = Mathf.Clamp(rotationX, -90f, 90f); transform.localRotation = Quaternion.Euler(rotationX, 0f, 0f); transform.parent.localRotation = Quaternion.Euler(0f, rotationY, 0f); } Vector3 moveInput = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical")); if (moveInput.magnitude > 0f) { moveInput = Quaternion.Euler(0f, rotationY, 0f) * moveInput; moveInput.Normalize(); float speedMultiplier = Input.GetKey(KeyCode.LeftShift) ? sprintSpeedMultiplier : 1f; transform.parent.position += moveInput * moveSpeed * speedMultiplier * Time.deltaTime; } if (Input.GetKey(KeyCode.Q)) { transform.parent.position += Vector3.up * elevationSpeed * Time.deltaTime; } if (Input.GetKey(KeyCode.E)) { transform.parent.position -= Vector3.up * elevationSpeed * Time.deltaTime; } if (Input.GetKeyDown(KeyCode.Escape) && UseLockCommands) { if (Cursor.lockState == CursorLockMode.None) { Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; } else { Cursor.lockState = CursorLockMode.None; Cursor.visible = true; } } } } }