- Home /
How to flip 2d GameObject based on direction?
I have a 2d ant that moves to wherever you click in the world. I want to flip the ant's sprite based on which direction it's moving. Here's my current code ("target" is the clicked destination):
if(transform.position.x > target.x || transform.position.x < target.x)
{
transform.Rotate(new Vector3(0,180,0));
}
Now, obviously, this just flips the ant 180 degrees for every frame until it reaches its destination.
Anyone have any suggestions on how to flip it only once based on the direction it's going? (in C#, if possible.)
Thanks!
Answer by robertbu · Mar 03, 2014 at 12:18 AM
How about:
if (transform.position.x < target.x) {
transform.rotation = Quaternion.identity;
}
else {
transform.rotation = Quaternion.Euler(0,180,0);
}
Quaternion.identity is no rotation. This sets the rotation every frame. If you were going to have a bizillion sprites with this script, I might check the current direction and only reset the rotation if it is different, but for just a few...
Yeah, that works great! Only thing is it's reversed (e.g. the ant is facing left when moving right, facing right when moving left). Is there a way to reverse it in code, or do I just flip the sprite image?
Converted your answer to comment. Comments are for comments, answers are for answers. Note the difference
Just reverse the '' sign in the first line of the code to reverse the logic.
Your answer
Follow this Question
Related Questions
Flipped objects Rotation issues 1 Answer
2D Animation does not start 1 Answer
Addforce ignores Rotation ? 1 Answer
Mirroring sprite around arbitrary axis causes collision issues 0 Answers