それで、私は、マウスをドラッグして、マウスを離した方向にキャラクターから発射物を発射できるプラットフォーマーを作成しています。速度は 2 点間の距離です。
public void mouseDragged(MouseEvent e) {
player.setAiming(true);
Point2D.Float aimpoint = new Point2D.Float(e.getXOnScreen(), e.getYOnScreen());
player.setAimpoint(aimpoint);
player.setAimDistance(GetDistanceToPoint(player.getPos(), aimpoint));
}
public static float GetAngleOfLine(Point2D.Float p1, Point2D.Float p2) {
double xDiff = p2.x - p1.x;
double yDiff = p2.y - p1.y;
System.out.println("P1X: " + p1.x + " P1Y: " + p1.y + " P2X: " + p2.x + " P2Y: " + p2.y + " Angle: " + Math.toDegrees(Math.atan2(yDiff, xDiff)));
return (float) Math.toDegrees(Math.atan2(yDiff, xDiff));
}
public static float GetDistanceToPoint(Point2D.Float p1, Point2D.Float p2){
float distance = (float) Math.sqrt(Math.pow(p2.y - p1.y, 2) + Math.pow((p2.x - p1.x), 2));
return distance;
}
そして、マウスを離すと、
player.setAimingangle(GetAngleOfLine(player.getPos(), player.getAimpoint()));
そして、発射物が作成されます。角度は player.aimingangle で、強度は player.aimingdistance です。
float yvel = (float) (strength * Math.sin(angle));
float xvel = (float) (strength * Math.cos(angle));
どこにでも飛んでいる信じられないほど奇妙な発射体を取得しています。