Ken Schaefer
5 years ago
4 changed files with 62 additions and 12 deletions
@ -1,37 +1,55 @@ |
|||||||
/****************************************************************************** |
/****************************************************************************** |
||||||
* Initial code based on Brackey's FPS video |
* Initial code based on Brackey's FPS video |
||||||
* https://youtu.be/_QajrabyTJc |
* 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. |
||||||
*****************************************************************************/ |
*****************************************************************************/ |
||||||
|
|
||||||
using System.Collections; |
/****************************************************************************** |
||||||
using System.Collections.Generic; |
* 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; |
using UnityEngine; |
||||||
|
|
||||||
public class MouseLook : MonoBehaviour |
public class MouseLook : MonoBehaviour |
||||||
{ |
{ |
||||||
public float mouseSensitivity = 100f; |
[SerializeField] private FloatReference mouseSensitivity; |
||||||
public Transform playerBody; |
|
||||||
|
|
||||||
private float xRotation = 0f; |
private float xRotation = 0f; |
||||||
|
|
||||||
// Start is called before the first frame update |
[SerializeField] private Transform mainCamera; |
||||||
|
|
||||||
void Start() |
void Start() |
||||||
{ |
{ |
||||||
// Keep the mouse cursor in the game window |
// Keep the mouse cursor in the game window |
||||||
Cursor.lockState = CursorLockMode.Locked; |
Cursor.lockState = CursorLockMode.Locked; |
||||||
} |
} |
||||||
|
|
||||||
// Update is called once per frame |
|
||||||
void Update() |
void Update() |
||||||
{ |
{ |
||||||
float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime; |
float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity.Value * Time.deltaTime; |
||||||
float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * 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 -= mouseY; |
||||||
xRotation = Mathf.Clamp(xRotation, -90f, 90f); |
xRotation = Mathf.Clamp(xRotation, -90f, 90f); |
||||||
transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f); |
mainCamera.localRotation = Quaternion.Euler(xRotation, 0f, 0f); |
||||||
|
|
||||||
playerBody.Rotate(Vector3.up * mouseX); |
|
||||||
|
|
||||||
|
// Simulate turning |
||||||
|
transform.Rotate(Vector3.up * mouseX); |
||||||
} |
} |
||||||
} |
} |
||||||
|
@ -0,0 +1,8 @@ |
|||||||
|
fileFormatVersion: 2 |
||||||
|
guid: 84535e060457e3e488de47035efa7eb0 |
||||||
|
folderAsset: yes |
||||||
|
DefaultImporter: |
||||||
|
externalObjects: {} |
||||||
|
userData: |
||||||
|
assetBundleName: |
||||||
|
assetBundleVariant: |
@ -0,0 +1,16 @@ |
|||||||
|
%YAML 1.1 |
||||||
|
%TAG !u! tag:unity3d.com,2011: |
||||||
|
--- !u!114 &11400000 |
||||||
|
MonoBehaviour: |
||||||
|
m_ObjectHideFlags: 0 |
||||||
|
m_CorrespondingSourceObject: {fileID: 0} |
||||||
|
m_PrefabInstance: {fileID: 0} |
||||||
|
m_PrefabAsset: {fileID: 0} |
||||||
|
m_GameObject: {fileID: 0} |
||||||
|
m_Enabled: 1 |
||||||
|
m_EditorHideFlags: 0 |
||||||
|
m_Script: {fileID: 11500000, guid: 7cb18c6bb3c4bcd40b8451100e11b136, type: 3} |
||||||
|
m_Name: MouseSensitivity |
||||||
|
m_EditorClassIdentifier: |
||||||
|
DeveloperDescription: |
||||||
|
Value: 250 |
Loading…
Reference in new issue