CrossFadeInFixedTime not playing the animation

so i have 3 animations : idle, shoot and reload , but when im trying to play them ( i used crossfadeinfixedtime for each) only 1 is playing (the idle one ) when i m trying to shoot or reload the gun the animations are not working,
here is the code:

    public AnimationClip shoot;
    public AnimationClip reloaddd;
    public AnimationClip idle;
    void Update () {
        if (Raycast_Forward.equipped_weapon=="pistol") {
            anim.CrossFadeInFixedTime(idle.name,0.01f);
}
    private void Fire()
    {
        anim.CrossFadeInFixedTime(shoot.name,0.01f);
    }
private void Do_Reload()
    {

        anim.CrossFadeInFixedTime (reloaddd.name, 0.01f);
    }

NOTE: this is not the entire code, i put only the section where im using animations.
Please help :confused:

That is a very fast fade. About 1 frame at 60fps.
I know on crossfade if you cross fade to a already playing animation of same name it will do nothing.
You must specify the extra normalized time parameter and then it will crossfade to its self.

The second thing is I don’t know what your update loop is doing ( Raycast forward?) but if that is evaluating to true every frame you most likely are canceling out your other animations immediately with that fast of a fade.

yes in RAYCAST_FORWARD.equipped_weapon i stored the name of the weapon tha is equipped, but there is no other way to intrerupt the idle animation when is firing or reloading , because the shoot and reload animations are playing very little because idle is looping i think

Yes. You should not be telling the idle to play every frame.
You really need to wait some time after playing your other animations then play your idle again.

Unity has lots of ways to accomplish this.
Simple code calls like invoke, or coroutines or using mechanim and others.

I would use a coroutine or mechanim.