# Rotating player/weapons sprite's direction with mouse

• Hi,
I've recently decided to transition from Love2D to Haxeflixel. I'm still an absolute beginner when it comes to programming so bear with me please. With the move to HaxeFlixel, I want to port over my little work in progress game that I was working on in Love2D where the the weapon (drawn separetly) aim is controlled with mouse courser position. If player moves their mouse over to the left side, the the player's sprite flips over to look at the mouse and vice versa, here's a little example:

How could I implement this using flixel? I'm aware that flixel has a lot of functions built in to do this, rather than doing all the maths myself.

• You could first make a `Vector2` pointing from the sprite to the mouse:

``````var vectorToTarget:Vector2 = FlxG.mouse.getPosition() - this.getPosition(); // subtracting the target position vector from the entity's position vector gives us a vector pointing from us to the target
``````

then, in the `update()` method, set the sprite's angle to the angle of the vector:

``````this.angle = MathUtil.radToDeg(vectorToTarget.angle); // the Vector2's angle is in radians so we need to convert it to degrees
``````

and check if the vector is pointing left or right, flipping the sprite accordingly:

``````if(vectorToTarget.x >= 0) {
this.flipY = false;
} else {
this.flipY = true;
}
``````

You could also decide to use a `FlxVector` instead of a `Vector2`, in that case you'll need to use the method `.subtract()` instead of just doing a subtraction operation when creating the vector, as the `FlxVector` class doesn't overload the operators.
You also won't need to convert radians to degrees as `FlxVector` measure their angle in degrees already in `FlxVector.degrees`.

Last thing to note:
I'm sure the code I've written here will need tweaking for your usecase, treat it as just a starting point, reply if you need more pointers.

• You could first make a `Vector2` pointing from the sprite to the mouse:

``````var vectorToTarget:Vector2 = FlxG.mouse.getPosition() - this.getPosition(); // subtracting the target position vector from the entity's position vector gives us a vector pointing from us to the target
``````

then, in the `update()` method, set the sprite's angle to the angle of the vector:

``````this.angle = MathUtil.radToDeg(vectorToTarget.angle); // the Vector2's angle is in radians so we need to convert it to degrees
``````

and check if the vector is pointing left or right, flipping the sprite accordingly:

``````if(vectorToTarget.x >= 0) {
this.flipY = false;
} else {
this.flipY = true;
}
``````

You could also decide to use a `FlxVector` instead of a `Vector2`, in that case you'll need to use the method `.subtract()` instead of just doing a subtraction operation when creating the vector, as the `FlxVector` class doesn't overload the operators.
You also won't need to convert radians to degrees as `FlxVector` measure their angle in degrees already in `FlxVector.degrees`.

Last thing to note:
I'm sure the code I've written here will need tweaking for your usecase, treat it as just a starting point, reply if you need more pointers.

Thank you so much! Now everything it's clear!

Looks like your connection to HaxeFlixel was lost, please wait while we try to reconnect.