- Home /
 
Head Bobbing Effect is Glitching Out on Collision
I have this C# script for the head bobbing effect, but there is a problem. Whenever the player hits the wall and then rotates the camera or stays in place, the main camera starts glitching up and down. Here is the code:
     public class HeadBob : MonoBehaviour
     {
         public Camera Camera;
         public CurveControlledBob motionBob = new CurveControlledBob();
         public LerpControlledBob jumpAndLandingBob = new LerpControlledBob();
         public RigidbodyFirstPersonController rigidbodyFirstPersonController;
         public float StrideInterval;
         [Range(0f, 1f)] public float RunningStrideLengthen;
 
        // private CameraRefocus m_CameraRefocus;
         private bool m_PreviouslyGrounded;
         private Vector3 m_OriginalCameraPosition;
 
 
         private void Start()
         {
             motionBob.Setup(Camera, StrideInterval);
             m_OriginalCameraPosition = Camera.transform.localPosition;
        //     m_CameraRefocus = new CameraRefocus(Camera, transform.root.transform, Camera.transform.localPosition);
         }
 
 
         private void Update()
         {
           //  m_CameraRefocus.GetFocusPoint();
             Vector3 newCameraPosition;
             if (rigidbodyFirstPersonController.Velocity.magnitude
 > 0 && rigidbodyFirstPersonController.Grounded)
             {
                 Camera.transform.localPosition = motionBob.DoHeadBob(rigidbodyFirstPersonController.Velocity.magnitude*(rigidbodyFirstPersonController.Running ? RunningStrideLengthen : 1f));
                 newCameraPosition = Camera.transform.localPosition;
                 newCameraPosition.y = Camera.transform.localPosition.y - jumpAndLandingBob.Offset();
             }
             else
             {
                 newCameraPosition = Camera.transform.localPosition;
                 newCameraPosition.y = m_OriginalCameraPosition.y - jumpAndLandingBob.Offset();
             }
             Camera.transform.localPosition = newCameraPosition;
 
             if (!m_PreviouslyGrounded && rigidbodyFirstPersonController.Grounded)
             {
                 StartCoroutine(jumpAndLandingBob.DoBobCycle());
             }
 
             m_PreviouslyGrounded = rigidbodyFirstPersonController.Grounded;
           //  m_CameraRefocus.SetFocusPoint();
         }
     }
 
               What should I do to make this stop?
               Comment
              
 
               
              Your answer