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);

但是这样做我的精灵围绕一些奇怪的点旋转了一个laaaaarge圆圈。

我尝试并尝试了这个解决方案,但在我进一步操作实体坐标和其他东西时感觉它有一些副作用。

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 alpha,它将占据图像文件的中心,不是猫。

如果这是发生在您身上的事情,您可以将猫或任何图像移动到图像文件的中心,或者在 DirectX 中进一步查看,您可以在其中定义一个矩形并将其用作剪切-out 从图像文件中绑定您的图像(猫)。

于 2013-04-13T19:56:51.260 回答