You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
2.1 KiB
55 lines
2.1 KiB
/****************************************************************************** |
|
* Initial code based on Brackey's FPS video |
|
* https://youtu.be/_QajrabyTJc |
|
* |
|
* Notes: |
|
* In the video, he attaches this script to the camera. I refactored it to put |
|
* it up on the main player element. That way the behaviors are all in one |
|
* place and "hidden." |
|
* |
|
* Changed the mouse sensitivity variable to use a Float Reference. This allows |
|
* me to put the value into a property/settings UI so the player can change the |
|
* value to his/her preference. Or it can be changed at design time in Unity. |
|
*****************************************************************************/ |
|
|
|
/****************************************************************************** |
|
* The Mouse Look script is responsible for rotating the player object and the |
|
* main camera in response to the movement of the mouse. |
|
* |
|
* Movement of the mouse on the Y axis simulates looking up and down. This will |
|
* rotate the camera and is clamped to a human-like range of motion. |
|
* |
|
* Movement on the mouse on the X axis simulates turning. This will rotate the |
|
* player object. |
|
*****************************************************************************/ |
|
using Architecture.Variables; |
|
using UnityEngine; |
|
|
|
public class MouseLook : MonoBehaviour |
|
{ |
|
[SerializeField] private FloatReference mouseSensitivity; |
|
private float xRotation = 0f; |
|
|
|
[SerializeField] private Transform mainCamera; |
|
|
|
void Start() |
|
{ |
|
// Keep the mouse cursor in the game window |
|
Cursor.lockState = CursorLockMode.Locked; |
|
} |
|
|
|
void Update() |
|
{ |
|
float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity.Value * Time.deltaTime; |
|
float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity.Value * Time.deltaTime; |
|
|
|
// Simulate looking up and down by rotating the camera. Clamp the rotation |
|
// to limit the range of motion. |
|
xRotation -= mouseY; |
|
xRotation = Mathf.Clamp(xRotation, -90f, 90f); |
|
mainCamera.localRotation = Quaternion.Euler(xRotation, 0f, 0f); |
|
|
|
// Simulate turning |
|
transform.Rotate(Vector3.up * mouseX); |
|
} |
|
}
|
|
|