1

2D スプライトを他の点ではなくその位置で回転させたいのですが、機能に問題があります。

この方法で D3DXMatrixTransformation2D を使用している人を見ました (スケーリングは除外されています)。

D3DXMATRIX mat;

D3DXVECTOR2 center(sprite.width / 2, sprite.height / 2);

D3DXVECTOR2 pos(sprite.x, sprite.y)

D3DXMatrixTransformation2D(
            &mat,
            NULL,
            NULL,
            NULL,
            &center,
            sprite.rotation,
            &pos);

しかし、これを行うと、私のスプライトは奇妙な点の周りを大きな円で回転します。

私はこの解決策を試してみましたが、エンティティの座標などをさらに操作すると、いくつかの副作用があるように感じます。

D3DXVECTOR2 pos(sprite.x + (sprite.width / 2), sprite.y + (sprite.height / 2))

D3DXMatrixTransformation2D(
            &mat,
            NULL,
            NULL,
            NULL,
            &pos,
            sprite.rotation,
            NULL);

不足しているものはありますか?

4

1 に答える 1

0

しばらくの間頭を悩ませてしまう小さな問題は、画像ファイルのサイズが、回転しようとしている画像の部分よりも大きい場合です。つまり、画像ファイルが 512x512 のようなサイズで、左下に 64x64 しかない小さな猫がいて、残りの部分が 0 アルファである場合、画像ファイルの中心をとります。猫のものではありません。

これがあなたに起こっていることである場合は、猫またはその画像を画像ファイルの中央に移動するか、長方形を定義してそれをカットとして使用できる DirectX をもう少し見てください。画像ファイルから -out して、画像 (cat) をバインドします。

于 2013-04-13T19:56:51.260 に答える