74 lines
2.2 KiB
C#
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);
|
|
}
|
|
}
|