(2D sidescrolling platformer) Flipping my character right or left depending on the mouse?

Hi, so I can’t find anything similar on the forums, so I’ll take a shot at a question.

I’m making a 2D platforming sidescroller, and I just have not idea how to flip my character right of left depending whether the mouse is on the right or left. Keep in mind, I know how to do angles as I am using it for rotating an arm around the body using:

Vector3 difference = Camera.main.ScreenToWorldPoint (Input.mousePosition) - transform.position;
				difference.Normalize (); 
				float rotZ = Mathf.Atan2 (difference.y, difference.x) * Mathf.Rad2Deg;

But I just can’t figure out how to do it. I make it so either my player constantly vibrates, flipping left and right, or doing nothing at all. I just don’t know how to make/structure the code.

I tried using a previousRotZ which was put inside the character flip function and then having an if statement that went along the lines of:

if( rotZ < 90 && rotZ > -90 && prevRotZ > 90 && prevRotZ < -90(
{
changedDirection = true;
{

But that didn’t help either. I just don’t know how to do it. If anyone can help I would appreciate.

Nevermind, it was easy to fix. Don’t know why the code in the example 2D code has to be so goddamn complicated. All I needed to do for the rotation is this:

transform.localScale = new Vector2(-xScale, yScale);

after declaring yScale and xScale to be floats, and setting them to be the transform.localscale x and y respectively.

One solution I can think of involves checking the mouse position relative to the player.

Example:(Haven’t tested it)
void Update()
{
bool isFacingRight = false;

    Vector 3 playerScreenPos = Camera.main.WorldToScreenPoint();
    Vector 3 mousePos = Input.mousePosition;

    if(mousePos.x >= playerScreenPos.x)
        isFacingRight = true;
    else
        isFacingRight = false;
}

Then you could use isFacingRight to set which direction the player is facing.
Hope this helps :slight_smile: