- Home /
Question by
MichaellaM · Dec 10, 2014 at 02:28 AM ·
c#2dflipflyingclick to move
How to flip a 2D character depending on the screen position where I click?
I'm making a 2D game in space, with heroes that fly. When I click in a position, he goes to there flying. But how can I flip it when I send it to an opposite position that I sent the last time?
I don't know if I'm explaining correctly... It's a little hard to express, but I can drawing something if needs.
That's the part of my script that's move the character and that's flip it:
void Update () {
if (Input.GetMouseButtonDown(0)) {
target = Camera.main.ScreenToWorldPoint(Input.mousePosition);
target.z = transform.position.z;
}
transform.position = Vector3.MoveTowards
(transform.position, target, speed * Time.deltaTime);
}
void Flip ()
{
// Switch the way the player is labelled as facing.
facingRight = !facingRight;
// Multiply the player's x local scale by -1.
Vector3 theScale = playerGraphics.localScale;
theScale.x *= -1;
playerGraphics.localScale = theScale;
}
Comment
Answer by MiniFish · Dec 11, 2014 at 09:20 AM
you can always check the x position of your input against the x position of your hero, then do your logic according to that result.
something like this
// input position
target = Camera.main.ScreenToWorldPoint(Input.mousePosition);
if(target.x < hero.x) // input X position is less than hero x position ,thus you clicked on hero's left side
{
if(facingRight)
{
Flip();
}
}
else if(target.x > hero.x) // same as above, but this time inpus is bigger than hero's position, meaning you clicked on hero's right.
{
if(!facingRight)
{
Flip();
}
}
Your answer