- Home /
Animation play error. No animation attached.
I've been trying to play the animation I created inside of unity. I've added the animation to an empty gameobject called "SwingAnimation"(It's no longer empty). (I created the animation using a cube which I later removed to add a sword.)
The animation is working since its looping every time I test it out.
This is the code which I've been trying to play the animation with:
swing.js Attached to the Player.
function Update () {
if (Input.GetButton ("Fire1")) {
GameObject.Find("SwingAnimation").animation.Play("swing");
}
}
I have also tried attaching the script directly on the gameobject containing the animation directly with:
function Update () {
animation.Play();
}
But all I get is: There is no 'Animation' attached to the "SwingAnimation" game object, but a script is trying to access it.
I'm just scratching my head wondering how this can be? There is clearly an animation attached to the gameobject SwingAnimation. What am I doing wrong and how can I fix this?
Thank you in advance for any help you can provide and I apologize if I re-post the question on the matter but I could not find any solution for my problem amongst them. // N0tiC
Can you please open up that "Cube" Animator Controller and tell me if there is an animation inside?
If there is, then you must access it in a different way, which I will tell you once you answer.
Answer by Hyperion · Dec 16, 2013 at 01:45 PM
In order to access the animation, first click the plus button on the bottom left of the animation controller (Parameters) and add a parameter Bool called Fire. Then do the following inside the cube's Update function (I guess you'll have to add a new script): Write var myAnimator: Animator= GetComponent(Animator); This connects the script to the controller. Then write: if (Input etc...) myAnimator.SetBool("Fire",true);
Warning: in order for this to work, you must give the cube an idle animation. So delete the orange block state, add an idle, and make sure it becomes orange. Then add back the original cube animation. You can do all this by dragging by dragging animations into the Animator Controller.
Feel free to ask questions. Also, look up on YouTube a thing called Mecanim and find a Unity tutorial on it to show you the visual tricks.
Oh, I forgot to say: make a transition from the idle animation to the other animation by right clicking the idle one, clicking make transition, then left clicking the other animation. Then click that transition and changed the requirements from Exit Time into Fire.
Sounds great.. I'll definetly check it out later! To be honest, I was officially lost when I saw that Animator Controller. Never seen it before and I've used Unity3d In the past. Thanks, Hyperion, I'll "Accept the answer as correct" once I've tried and confirmed!
No problem. Glad to help! It took me a while to figure it all out, but it is worth it.
And here's a link to the Unity $$anonymous$$ecanim tutorial to guide you visually, if you haven't already seen it. http://www.youtube.com/watch?v=Xx21y9eJq1U
Also, somewhere in your script, you'll need to set the parameter Fire back to false in order to stop the animation...
It all worked like a sharm. Now that I know how it all works... There is work to be done! Thank you all!
Answer by ByteVault · Dec 16, 2013 at 08:37 AM
I hope this is what you meant for me to do:
Okay, good. Now I can tell you how to access that animation. I'll do it in the answer.
Answer by TheRichardGamer · Dec 16, 2013 at 09:11 AM
Did you notice that it doesn't have a animation component attached to it? That may just be your problem.
That's true, if you want to use the legacy animation system.