First you need to create a vector from the ship position to the mouse position:
1 2
| float vx = mousex-shipx; float vy = mousey-shipy; |
normalize it and you've got your direction vector. Use this for movement.
You'll also need to know the angle of the direction that you use to rotate the ship sprite in the direction of the mouse. You can get the angle from a vector using this piece of code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| public static final double getAngleFromVector(double xp, double yp) { if ((xp!=0)&&(yp!=0)) { double angle=0; if (xp!=0) { if ((xp>=0)&&(yp>=0)) angle=Math.atan(yp/xp); if ((xp<0)&&(yp>=0)) angle=Math.PI-Math.atan(yp/-xp); if ((xp<0)&&(yp<0)) angle=Math.PI+Math.atan(-yp/-xp); if ((xp>=0)&&(yp<0)) angle=Math.PI*2-Math.atan(-yp/xp); } else { if (yp>=0) angle=Math.PI/2; else angle=Math.PI+Math.PI/2; } return angle; } else { if (xp==0 && yp==0) return 0; if (xp==0 && yp>0) return Math.PI*0.5; if (xp==0 && yp<0) return -Math.PI*0.5; if (yp==0 && xp>0) return 0; else return Math.PI; } } |
Btw. How much math do know?