- Home /
Unity not recognizing true statement.
Hello,
I have a ledge hang and climb character where his animation flips on whether you are running left or right.
I want to disable movement when he is climbing and I've managed to stop all movement apart from the flipping.
So I have the boolean set...
bool moveDisable = false;
Then on pressing the spacebar to climb the boolean is set to true...
anim.SetBool ("MoveDisable", !moveDisable);
Then if moveDisable is true return so that the flip function isn't carried out...
if (!moveDisable) {return;}
if (move > 0 && !facingRight && moveDisable)
{
Flip ();
} else if (move < 0 && facingRight && moveDisable)
{
Flip ();
}
I can't see why this doesn't work. The problem is that it doesn't seem to recognize that moveDisable is true and return, if I make it false then it does return and there is no flip in the animation.
Any help will be greatly appreciated, thanks :)
Answer by whydoidoit · Mar 23, 2014 at 12:20 PM
You code says !moveDisable which is moveDisable == false not true as the text of your question states. Also you are setting the inverse of the moveDisable flag into the animator. The ! symbol means NOT
If 'moveDisable' equals false then doesn't '!moveDisable' equal true?
What ! does in code and how to use it is pretty common. In Unity it works the same as regular program$$anonymous$$g. You can look up examples anywhere. The only tricky part is that your animo.setBool...
is the same as saying moveDisable=!moveDisable;
, which means to "flip" the value (a common non-Unity trick.)
Cool, I've fixed it now. Ins$$anonymous$$d of using ! I just used 'moveDisable = true' in the anim and 'moveDisable == true' in the if statement.
Thanks for your help :D