Paste
Of Code


 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
using Unity.Cinemachine;
using UnityEngine;
using UnityEngine.InputSystem;


public class HeadBobbing : MonoBehaviour
{
    [Header("References")]
    [SerializeField] private InputHolder inputHolder;
    [SerializeField] private CinemachineCamera vCam_Idle;
    [SerializeField] private CinemachineCamera vCam_Walking;
    [SerializeField] private CinemachineCamera vCam_Sprinting;
    [SerializeField] private CinemachineCamera vCam_IdleCrouching;
    [Space]
    [Header("Noise Profiles")]
    [SerializeField] private NoiseSettings headbob_Idle;
    [SerializeField] private NoiseSettings headbob_Walking;
    [SerializeField] private NoiseSettings headbob_Sprinting;
    [SerializeField] private NoiseSettings headbob_IdleCrouch;


    private CinemachineBasicMultiChannelPerlin noiseComponent;
    private Vector2 playerInput;


    private void Update()
    {
        CheckForHeadBobTrigger();
        PlayerInput();
    }

    private void CheckForHeadBobTrigger()
    {
        bool isMoving = playerInput.sqrMagnitude > 0.01f;
        bool isSprinting = inputHolder.runAction.action.IsPressed();
        bool isCrouching = inputHolder.crouchAction.action.WasPerformedThisFrame();


        if (!isMoving)
        {
            if (isCrouching)
            {
                StartIdleCrouchingHeadBob();
            }
            else
                StartIdleHeadBob();
        }
        else
        {
            if (isSprinting)
                StartSprintingHeadBob();
            else
                StartWalkingHeadBob();
            
        }
       
    }

    private void StartIdleHeadBob()
    {
      SetActiveCamera(vCam_Idle);
    }

    private void StartWalkingHeadBob()
    {
        SetActiveCamera(vCam_Walking);
    }

    private void StartSprintingHeadBob()
    {
        SetActiveCamera(vCam_Sprinting);
    }

    private void StartIdleCrouchingHeadBob()
    {
        SetActiveCamera(vCam_IdleCrouching);
    }

    private void SetActiveCamera(CinemachineCamera activeCam)
    {
        vCam_Idle.Priority = 0;
        vCam_Walking.Priority = 0;
        vCam_Sprinting.Priority = 0;
        vCam_IdleCrouching.Priority = 0;

        activeCam.Priority = 10;
    }


    private void PlayerInput()
    {
        playerInput = inputHolder.moveAction.action.ReadValue<Vector2>();
    }
}

Toggle: theme, font