Given the sprites X and Y values, and the mouses X and Y values, how can I make the sprite face the mouse cursor?
I tried doing this in my move method which I found in another SO question:
private function move(mousePosX:Number, mousePosY:Number) {
if(key.isDown(Keyboard.A))
this.vx -= this.speed;
else
this.vx *= this.friction;
if(key.isDown(Keyboard.D))
this.vx += this.speed;
else
this.vx *= this.friction;
if(key.isDown(Keyboard.W))
this.vy -= this.speed;
else
this.vy *= this.friction;
if(key.isDown(Keyboard.S))
this.vy += this.speed;
else
this.vy *= this.friction;
this.x += vx;
this.y += vy;
// Make the player face the cursor
this.rotation = Math.atan2(this.x - mousePosX, this.y - mousePosY);
}
And rotation does happen, but it's of one or two pixels. this.x
and this.y
are the sprite X and Y values.
Cheers!
EDIT: Got it. here's the final calculation:
this.rotation = -(Math.atan2(this.x - mousePosX, this.y - mousePosY) * 180 / Math.PI);