I created a model in Blender and posed it the way I want it to look. The character will never move and no animations will ever change.
I exported the character with animations to an FBX and imported it into Unity 3D. After dropping the character into the scene, the character's pose is back to the default take.
How can I force the character to use the pose that I want? Do I have to do it in script or is there a setting that I can change to make it play the idle animation at all times?
Putting your model in the scene will not invoke idle animation, animation and rendering is two separate thing. To always play a certain animation on a model you have three option -
1. Via Legacy Animation -
Select you model in the scene, remove the default Animator component and add a new Animation component. (Animator and Animation are two different component type.) It has an option of selecting an animation clip. Drop your animation clip there and choose 'Play Automatically'.
2. Via Script -
You can add Animation component, attach multiple animation and select which one to play via script too.
You can also do this for meca-anim way which is explained in the next point.
3. Via Meca-Anime
Every model has a default Animator component. It needs an animation controller object to run. Create an animation controller (Click on create button in project view). Attach the controller to the Animator component. Double click on the controller to open Animator view. Drop your clip there and make it as default. The default animation plays automatically now. Using Meca-anime has many advantage over legacy way, which is beyond the scope of this answer. Check the following link instead -
Mecanim vs Legacy Animation
Related
I've added an animation clip to a canvas which animates position and alpha channel of its children (like buttons etc.). Now I'm gonna play this animation via pressing the play button (one of itself's children) as shown as here:
(Click om images to see in full screen)
I created a trigger in mecanim and sat as the trigger of transiting to that animation but it didn't work. Is there any ways else or was my job correct and did I some mistakes?
Please help, thanks
In the animator window just making the trigger doesn't do anything. You need to set the trigger by getting a reference to the animator and calling SetTrigger("yourTriggerName"). You can call this in the inspector using the UI button's OnClick() method.
Go to the inspector for the play button and scroll down to where you see this:
click the plus sign and then drag the game object with the animator you want to trigger onto the field that says None(Empty) then select the animator from the drop down menu that appears and select the SetTrigger function. Then type in the name of your trigger Exactly. Upper case matters. That's it. It should look something like this when you are done:
Obviously, you will have to use the correct GameObject and trigger name so yours will look a little different.
How can I stop make unity continuous looping
what I have done
1- I add animator to my object.
2- I create animator controller
3- I create my animation
4- finally link my animation controller to my object
it works just fine , but it keep looping
how can I make it animate just once
In your project panel select your animation and in inspector unCheck Loop Time property. That will stop looping your animation :)
I have pulled the animation to the Motion tab both by dragging and trough the select motion search function but neither makes the animation stick to my idle state. Can someone give me a pointer to what im doing wrong?
One reason could be that the animations are marked as legacy.
Select one or many animation, in the inspector next to the lock, right click, then Debug. Untick the Legacy. No need to save or else.
The animation which you're trying to set is for another model!
You should use an animation that is for the model.
Or if you insist on using that animation select animation from assets and do a "Control + D" to duplicate it and use new one.
Use the Animator, not the animation controller. I made this mistake when I was following a tutorial. This is only relevant if you are animating .anim files within unity itself. Animation controller is the way to go if you import animations for your specific model.
Please see this image
I make a script called reload :
#pragma strict
function Update () {
if (Input.GetKey (KeyCode.R)){
animation.Play("Take 001");
}
}
But when I press R :
MissingComponentException:
There is not "Animation" attached to the "AK" game object, but a script is trying to access it.
Please help
You need to add an Animation component. If you click the "Add Component" button, and search for Animation, you'll see the component you need to add.
There is difference between "Animator" and "Animation" component.
In order to use animation.play() you need to have an Animation component where the clip would be added(here the clip name should be "Take 001"). This is he legacy animation system. You need to import your fbx as legacy.
Here in your screenshot, its the Animator component that is used which takes the controller. Its the mecanim animation system.
Using unity 4.3.4f1.
I started a new project with only one game object on wich I added an animation with 4 sprites. I choosed "Always Animate" from the Animator configuration oon the game object.
When I run the game, the animation play just one time. I see in the animator panel that my animation is replayed again and again because I only have one state. However, Animation won't loop when running the game.
Anyone knows why ?