Skip to content
Snippets Groups Projects
CameraFollow.cs 1.56 KiB
Newer Older
  • Learn to ignore specific revisions
  • Josiane Pos's avatar
    Josiane Pos committed
    using UnityEngine;
    
    using UnityEngine;
    using UnityEngine.InputSystem;
    using UnityEngine.Serialization;
    
    public class CameraFollow : MonoBehaviour
    { 
    
    Josiane Pos's avatar
    Josiane Pos committed
        [FormerlySerializedAs("smoothSpeed")] [SerializeField] private float m_smoothSpeed = 0.125f;
    
        [FormerlySerializedAs("lookSensitivityMultiplier")] [SerializeField] private float controllerLookMultiplier = 5f;
    
    Josiane Pos's avatar
    Josiane Pos committed
    
    
        private float finalSmoothSpeed;
    
    Josiane Pos's avatar
    Josiane Pos committed
        private InputAction LookInput;
    
        private Vector2 m_desiredPosition;
        private Vector2 m_smoothedPosition;
    
    Josiane Pos's avatar
    Josiane Pos committed
    
        private void Start()
        {
            LookInput = InputSystem.actions.FindAction("Look");
    
            LookInput.performed += OnLook;
    
    Josiane Pos's avatar
    Josiane Pos committed
        }
    
        private void OnLook(InputAction.CallbackContext context)
    
    Josiane Pos's avatar
    Josiane Pos committed
        {
    
            
            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;
    
    Josiane Pos's avatar
    Josiane Pos committed
    
    
            }
            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);
    
    Josiane Pos's avatar
    Josiane Pos committed
        }
    
    Josiane Pos's avatar
    Josiane Pos committed
    }