Newer
Older
using UnityEngine;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.Serialization;
public class CameraFollow : MonoBehaviour
{
[FormerlySerializedAs("smoothSpeed")] [SerializeField] private float m_smoothSpeed = 0.125f;
[FormerlySerializedAs("lookSensitivityMultiplier")] [SerializeField] private float controllerLookMultiplier = 5f;
private float finalSmoothSpeed;
private Vector2 m_desiredPosition;
private Vector2 m_smoothedPosition;
private void Start()
{
LookInput = InputSystem.actions.FindAction("Look");
LookInput.performed += OnLook;
private void OnLook(InputAction.CallbackContext context)
if (context.control.device is Gamepad)
{
Vector2 inputVector = LookInput.ReadValue<Vector2>();
m_desiredPosition =
new Vector2(transform.position.x + inputVector.x, transform.position.y + inputVector.y);
finalSmoothSpeed = controllerLookMultiplier;
}
else if (context.control.device is Mouse)
{
Vector2 mousePosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
m_desiredPosition = new Vector2 (mousePosition.x, mousePosition.y);
finalSmoothSpeed = m_smoothSpeed;
}
}
private void Update()
{
m_smoothedPosition = Vector2.Lerp(transform.position, m_desiredPosition, finalSmoothSpeed);
transform.position = new Vector3(m_smoothedPosition.x, m_smoothedPosition.y, transform.position.z);