#if (ENABLE_INPUT_SYSTEM && INPUT_SYSTEM_INSTALLED) #define USE_INPUT_SYSTEM #endif #if USE_INPUT_SYSTEM using UnityEngine.InputSystem; #endif using System.Collections; using System.Collections.Generic; using UnityEngine; public class LookWithMouse : MonoBehaviour { const float k_MouseSensitivityMultiplier = 0.01f; public float mouseSensitivity = 100f; public Transform playerBody; float xRotation = 0f; // Start is called before the first frame update void Start() { Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; } // Update is called once per frame void Update() { bool unlockPressed = false, lockPressed = false; #if USE_INPUT_SYSTEM float mouseX = 0, mouseY = 0; if (Mouse.current != null) { var delta = Mouse.current.delta.ReadValue() / 15.0f; mouseX += delta.x; mouseY += delta.y; lockPressed = Mouse.current.leftButton.wasPressedThisFrame || Mouse.current.rightButton.wasPressedThisFrame; } if (Gamepad.current != null) { var value = Gamepad.current.rightStick.ReadValue() * 2; mouseX += value.x; mouseY += value.y; } if (Keyboard.current != null) { unlockPressed = Keyboard.current.escapeKey.wasPressedThisFrame; } mouseX *= mouseSensitivity * k_MouseSensitivityMultiplier; mouseY *= mouseSensitivity * k_MouseSensitivityMultiplier; #else float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * k_MouseSensitivityMultiplier; float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * k_MouseSensitivityMultiplier; unlockPressed = Input.GetKeyDown(KeyCode.Escape); lockPressed = Input.GetMouseButtonDown(0) || Input.GetMouseButtonDown(1); #endif if (unlockPressed) { Cursor.lockState = CursorLockMode.None; Cursor.visible = true; } if (lockPressed) { Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; } if (Cursor.lockState == CursorLockMode.Locked) { xRotation -= mouseY; xRotation = Mathf.Clamp(xRotation, -90f, 90f); transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f); playerBody.Rotate(Vector3.up * mouseX); } } }