using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.InputSystem.Controls;
public class PlayerMovement : MonoBehaviour
{
PlayerInput playerInput;
InputActionMap actionMap;
InputAction lookAction;
InputAction moveAction;
public float MoveSpeed = 5f;
[SerializeField] GameObject Player;
[SerializeField] GameObject PlayerCamera;
CharacterController Controler;
Rigidbody rb;
public float Sensitivity;
private void OnEnable()
{
lookAction.Enable();
}
public void Awake()
{
playerInput = GetComponent<PlayerInput>();
actionMap = playerInput.actions.FindActionMap("Player -In game-", throwIfNotFound: true);
moveAction = actionMap.FindAction("Movement", throwIfNotFound: true);
lookAction = actionMap.FindAction("Look", throwIfNotFound: true);
Controler = GetComponent<CharacterController>();
rb = GetComponent<Rigidbody>();
Vector2 MouseDelta = lookAction.ReadValue<Vector2>();
InputSystem.AddDevice<Mouse>();
InputSystem.EnableDevice(Mouse.current);
//For MouseLookingAround
Vector3 euler = PlayerCamera.transform.rotation.eulerAngles;
X = euler.x;
Y = euler.y;
}
public void Start()
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = false;
}
public void Update()
{
Movement();
MouseLookingAround();
}
private void Movement()
{
Vector3 moveInput = moveAction.ReadValue<Vector3>();
Vector3 move = new Vector3(moveInput.x, moveInput.y, moveInput.z);
if (move.magnitude > 1f) move.Normalize();
if (move.y == 0)
{
if (Mathf.Abs(move.x) > 0.1f)
{
transform.position += move * MoveSpeed * Time.deltaTime;
}
if (Mathf.Abs(move.z) > 0.1f)
{
transform.position += move * MoveSpeed * Time.deltaTime;
}
}
}
//Mouse script
private float X;
private float Y;
private void MouseLookingAround()
{
Vector2 mouseDelta = lookAction.ReadValue<Vector2>() * Sensitivity;
X -= mouseDelta.y;
X = Mathf.Clamp(X, -90f, 90f);
PlayerCamera.transform.localRotation = Quaternion.Euler(X, 0f, 0f);
transform.Rotate(Vector3.up * mouseDelta.x);
}
}