This repository has been archived on 2025-04-11. You can view files and clone it, but cannot push or open issues or pull requests.
project-undercover/Project Undercover/Assets/Scripts/Misc/PlayerInput.cs
2017-10-03 04:15:13 -05:00

74 lines
2.2 KiB
C#

using UnityEngine;
public static class PlayerInput
{
private static float lookAngle = 0f;
private static float tiltAngle = 0f;
public static Vector3 GetMovementInput(Camera relativeCamera)
{
Vector3 moveVector;
float horizontalAxis = Input.GetAxis("Horizontal");
float verticalAxis = Input.GetAxis("Vertical");
if (relativeCamera != null)
{
// Calculate the move vector relative to camera rotation
Vector3 scalerVector = new Vector3(1f, 0f, 1f);
Vector3 cameraForward = Vector3.Scale(relativeCamera.transform.forward, scalerVector).normalized;
Vector3 cameraRight = Vector3.Scale(relativeCamera.transform.right, scalerVector).normalized;
moveVector = (cameraForward * verticalAxis + cameraRight * horizontalAxis);
}
else
{
// Use world relative directions
moveVector = (Vector3.forward * verticalAxis + Vector3.right * horizontalAxis);
}
if (moveVector.magnitude > 1f)
{
moveVector.Normalize();
}
return moveVector;
}
public static Quaternion GetMouseRotationInput(float mouseSensitivity = 3f, float minTiltAngle = -75f, float maxTiltAngle = 45f)
{
//if (!Input.GetMouseButton(1))
//{
// return;
//}
float mouseX = Input.GetAxis("Mouse X");
float mouseY = Input.GetAxis("Mouse Y");
// Adjust the look angle (Y Rotation)
lookAngle += mouseX * mouseSensitivity;
lookAngle %= 360f;
// Adjust the tilt angle (X Rotation)
tiltAngle += mouseY * mouseSensitivity;
tiltAngle %= 360f;
tiltAngle = MathfExtensions.ClampAngle(tiltAngle, minTiltAngle, maxTiltAngle);
var controlRotation = Quaternion.Euler(-tiltAngle, lookAngle, 0f);
return controlRotation;
}
public static bool GetSprintInput()
{
return Input.GetKey(KeyCode.RightShift) || Input.GetKey(KeyCode.LeftShift);
}
public static bool GetJumpInput()
{
return Input.GetKeyDown(KeyCode.Space);
}
public static bool GetToggleWalkInput()
{
return Input.GetKeyDown(KeyCode.Tab);
}
}