- Home /
Animation State issue
Im having a problem with my project I have been working with, following the 3dbuzz tutorials for unity 3rd person system, all the way up to the end of integrating maya characters section (last of the system videos before starting "third person game" videos) and most everything has worked decent, but I am having problems with my animation states.
First off is that my jumping "state" of animation is never actually set as my characters state, even though as the videos show, I have coded things correctly I do beleive.
Here is a code snippet of the section where I have my "jumping" character state method:
void Jumping()
{
if (TP_Controller.CharacterController.isGrounded)
{
if (lastState == CharacterState.Running)
animation.CrossFade("RunLand");
else
animation.CrossFade("JumpLand");
State = CharacterState.Landing;
}
else if (!animation.IsPlaying("Jump"))
{
State = CharacterState.Falling;
animation.CrossFade("Falling");
}
else
{
State = CharacterState.Jumping;
// Help determine if we fell too far
}
}
//and here I have a snippet of my "jump" start action method(located elsewhere in animator script):
public void Jump()
{
if (!TP_Controller.CharacterController.isGrounded || IsDead || State == CharacterState.Jumping)
return;
lastState = State;
State = CharacterState.Jumping;
animation.CrossFade("Jumping");
}
and with these going as they are, I go into unity, and press space for my character to jump (which the character does indeed leave the ground because of my motor script) the player doesnt animate the "jump" animation, and doesnt ever enter the "jumping" state, just immeadiately it says he is into the "falling" state, which leads me to beleive the jump implementation isnt working for me?
Someone who has done the 3DBuzz tutorials would be best to answer this for me, but anyone who noticed a problem with coding in those methods or needs more info...feel free to chime in and help me get this working properly :) maybe I made a silly typo or just followed along wrong in the videos, but as far as I can tell from re-watching them, the code seems legit... Maybe there is an error that 3DBuzz overlooked in the videos?
So anyway the whole reason this bothers me (cuz it looks alright even just going right into fall animation) is that I am trying to add another state for my character, and he would be off the ground in this state, so I need jumping to work right, so that when I do add the new methods, they work with if statements asking if the player is jumping and such...which right now, I would have to check if he is falling instead, and could lead to problems down the road....
Answer by MD_Reptile · May 18, 2012 at 02:01 PM
In thinking about this months later, I came to realize that part of the problem was that in blender, the origin of my player was not moving along with the player during some of his animations, and also there were more errors in my code that don't appear in these snippets. I will revisit this project and fix these things, but thanks for the help anyway!
Answer by StephanK · Feb 23, 2012 at 08:05 PM
Im not sure if this is your problem, but the logic in you Jump() method is probably flawed. I guess the if clause should be:
if (!isGrounded && !IsDead && !State == CharacterState.Jumping)
Right now you will only jump if you are already jumping...
I see what your saying, I tried using State != CharacterState.Jumping ins$$anonymous$$d, and that made it so he just remains in the idle pose, and jumps with the motor, but his state stays "idle" ins$$anonymous$$d of the previous "falling" state....hmmm no luck yet, but you might be onto something...
Errr no, thats right that line controls him animating into another jump, if he is already in the air, or dead, or in the middle of a jump already...doesnt have anything to do with him jumping because of the line "return" after it