0

実際に 3D ライブラリを使用せずに 3D をシミュレートするチューブ シューター風のゲームを Java で開発しています。現在、(この場合は右に移動するために)使用して、画面の中心点を中心に回転するプレイヤー制御の船があります。

    angle += 0.1;
    x = Math.cos(angle) * radius + cX;
    y = Math.sin(angle) * radius + cY;

は中心点からの位置 (例: 270angleは中心の真下)、xy現在の船の位置、radiusは中心からの距離、 はcX中心cY点の位置です。

現在、ポイントを中心に回転することはスムーズに機能していますが、実際の船を回転させて常に中心を指すようにする方法がわかりません。私はオンラインで多くのことを見てきましたが、画面上の他のオブジェクトに影響を与えずに個人Image(またはそれが機能しない場合は配列)を回転させる方法を理解できません。drawLines

簡単に言えば、個人Imageを回転させて常に離れた x、y 位置を指すようにするにはどうすればよいでしょうか?

4

1 に答える 1

0

必要なのは、AffineTransform基本的にJavaのマトリックスクラスであるクラスです。インスタンスGraphics2Dを受け入れる描画イメージバリアントがあります。AffineTransform

boolean java.awt.Graphics2D.drawImage(Image img, AffineTransform xform, ImageObserver obs)

変換を作成するには、2D行列演算を使用できます。

AffineTransform trans = new AffineTransform();
trans.translate(x, y);
trans.rotate(theta);
trans.scale(scalex, scaley);
etc...

順序が重要であることに注意してください。おそらく、最初に拡大縮小し、回転してから、対応する場所に画像を移動する必要があります。うまくいくはずです。

Javaは、3Dパワーを使用して可能な限り高速に描画します。これは、ソフトウェアレンダラーよりも高速ですが、ネイティブのopenglからはかなりかけ離れています。

于 2012-09-30T21:15:56.890 に答える