2013-02-21 27 views
1

我想旋转我的2D精灵在他们的位置,而不是任何其他点,但我有麻烦的功能。D3DXMatrixTransformation2D代理怪异

我看到以这种方式使用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); 

我错过了什么?

+0

对我来说第一种方法会导致它在大圆圈内旋转很有意义。但是,你用第二种方法看到了什么问题? – Pace 2013-02-21 02:53:25

+0

无。我发现副作用来自别的东西。 仍然有点奇怪,我只找到第一种方法,而我确定人们想要我的^^ – 2013-02-22 14:51:36

回答

0

一个小问题可能让你挠了一阵头,就是如果你的图像文件的尺寸大于你想旋转的图像部分。 我的意思是,如果你的图像文件是像512x512这样的东西,并且左下方只有一个小猫,它只有64x64,其余的只有0 alpha,它将占据图像文件的中心,而不是猫。

如果这是您正在发生的事情,您可以将猫或任何图像移动到图像文件的中心,或者在DirectX中稍微查看一下,您可以定义一个矩形并使用它作为从图像文件切出来限制你的图像(猫)。