47 lines
1.1 KiB
C#
47 lines
1.1 KiB
C#
using UnityEngine;
|
|
using UnityEngine.InputSystem;
|
|
|
|
public class PlayerMove : MonoBehaviour
|
|
{
|
|
[Range(0f, 10f)]
|
|
public float moveSpeed = 5f;
|
|
|
|
[SerializeField]
|
|
private InputManager _inputManager;
|
|
[SerializeField]
|
|
private GameObject _camera;
|
|
|
|
private CharacterController _controller;
|
|
|
|
// Start is called once before the first execution of Update after the MonoBehaviour is created
|
|
void Start()
|
|
{
|
|
_controller = GetComponent<CharacterController>();
|
|
}
|
|
|
|
// Update is called once per frame
|
|
void Update()
|
|
{
|
|
Vector3 input = new Vector3(_inputManager.moveInput.x, 0f , _inputManager.moveInput.y);
|
|
|
|
Vector3 moveDir = Vector3.zero;
|
|
moveDir += MoveDir(input);
|
|
moveDir += Gravity();
|
|
|
|
_controller.Move(moveSpeed * moveDir * Time.deltaTime);
|
|
}
|
|
|
|
Vector3 MoveDir(Vector3 input)
|
|
{
|
|
Quaternion camRotation = Quaternion.Euler(0f, _camera.transform.rotation.eulerAngles.y, 0f);
|
|
input = camRotation * input;
|
|
|
|
return input;
|
|
}
|
|
|
|
Vector3 Gravity()
|
|
{
|
|
return Physics.gravity;
|
|
}
|
|
}
|