Aim Down Sights script stopped working for no reason. Please help!

So I was following a tutorial for an Aim Down Sight script that initially worked. However after creating a script for the reload with animation I can no longer move the pistol to aim down sights.

Here is the scripts used in the Glock-18 Script:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Glock18 : MonoBehaviour
{
    private Vector3 originalPosition;
    public Vector3 aimPosition;
    public float adsSpeed = 8f;

    public int bulletsPerMag = 15;
    public int bulletsLeft = 150;
    public float range = 100f;
    public int currentBullets;
    private Animator anim;

    public ParticleSystem muzzleFlash;
    private AudioSource audioSource;
    public AudioClip shootSound;

    public Transform shootPoint;

    public float fireRate = 0.25f;

    float fireTimer;

    private bool isReloading;

    void Start()
    {
        anim = GetComponent<Animator>();

        audioSource = GetComponent<AudioSource>();

        originalPosition = transform.localPosition;
        currentBullets = bulletsPerMag;
    }

    void Update()
    {
        if (Input.GetButton("Fire1"))
        {
            if (currentBullets > 0)
            {
                Fire();
            }
        }
        else if (currentBullets == 0)
        {
            DoReload();
        }

        if (Input.GetKeyDown(KeyCode.R))
        {
            if (currentBullets < bulletsPerMag && bulletsLeft > 0)
            {
                DoReload();
            }
        }

        if(fireTimer < fireRate)
        {
            fireTimer += Time.deltaTime;
        }

        AimDownSights();
    }

    private void AimDownSights()
    {
        if (Input.GetButton("Fire2") && !isReloading)
        {
            transform.localPosition = Vector3.Lerp(transform.localPosition, aimPosition, Time.deltaTime * adsSpeed);
            Debug.Log("Aiming");
        }
        else
        {
            transform.localPosition = Vector3.Lerp(transform.localPosition, originalPosition, Time.deltaTime * adsSpeed);
        }
    }

    private void FixedUpdate()
    {
        AnimatorStateInfo info = anim.GetCurrentAnimatorStateInfo(0);

        isReloading = info.IsName("Reload");
        // if (info.IsName("Fire")) anim.SetBool("Fire", false);
    }

    private void Fire()
    {
        if (fireTimer < fireRate || currentBullets <= 0 || isReloading) return;

        RaycastHit hit;

        if (Physics.Raycast(shootPoint.position, shootPoint.transform.forward, out hit, range))
        {
            Debug.Log(hit.transform.name + " hit");
        }

        anim.CrossFadeInFixedTime("Fire", 0.1f);
        muzzleFlash.Play();
        PlayShootSound();

        currentBullets--;
        fireTimer = 0f;
    }

    public void Reload()
    {
        if (bulletsLeft <= 0) return;

        int bulletsToLoad = bulletsPerMag - currentBullets;
        int bulletsToDeduct = (bulletsLeft >= bulletsToLoad) ? bulletsToLoad : bulletsLeft;

        bulletsLeft -= bulletsToDeduct;
        currentBullets += bulletsToDeduct;
    }

    private void DoReload()
    {
        AnimatorStateInfo info = anim.GetCurrentAnimatorStateInfo(0);

        if (isReloading) return;

        anim.CrossFadeInFixedTime("Reload", 0.01f);
    }


    private void PlayShootSound()
    {
        audioSource.clip = shootSound;
        audioSource.Play();
    }
}

The AimDownSights(); is for the Aiming and the DoReload(); is for reloading enimation as well as Reload(); for the actual refill which is triggered within the animation script.

And here is the ReloadState scripts for the reload animation:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ReloadState : StateMachineBehaviour
{
    public float reloadTime = 0.95f;
    bool hasReloaded = false;

    // OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
    override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        hasReloaded = false;
    }

    // OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
    override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        if (hasReloaded) return;
        
        if(stateInfo.normalizedTime >= reloadTime)
        {
            animator.GetComponent<Glock18>().Reload();
            hasReloaded = true;
        }
    }

    // OnStateExit is called when a transition ends and the state machine finishes evaluating this state
    override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    {
        hasReloaded = false;
    }

    // OnStateMove is called right after Animator.OnAnimatorMove()
    //override public void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    //{
    //    // Implement code that processes and affects root motion
    //}

    // OnStateIK is called right after Animator.OnAnimatorIK()
    //override public void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
    //{
    //    // Implement code that sets up animation IK (inverse kinematics)
    //}
}

Please could somebody help me out? I am mostly new to unity and can’t figure this out.

PS: If I need to refine any of these to make it easier to see please tell me.

It’s probably because the animation is holding the transform tight on its position, you have a script trying to move a transform and an animator trying to move (in this case to keep still) the same transform. You will have to either use an animation for both movements or animate using script for both movements.