【发布时间】:2012-05-06 20:09:16
【问题描述】:
我目前正在开发类似最终幻想的游戏,并且我正在研究从世界地图切换到战斗时的效果。我想要在旋转效果时放大,我想简单地为将传递给 SpriteBatch.Begin 的变换矩阵设置动画,但我的问题是当我旋转时,旋转原点是我整个场景的左上角并且它没有't“放大”居中。我看到你可以在 SpriteBatch.Draw 上指定一个旋转原点,但它会为每个精灵设置它,我想旋转整个场景。
【问题讨论】:
我目前正在开发类似最终幻想的游戏,并且我正在研究从世界地图切换到战斗时的效果。我想要在旋转效果时放大,我想简单地为将传递给 SpriteBatch.Begin 的变换矩阵设置动画,但我的问题是当我旋转时,旋转原点是我整个场景的左上角并且它没有't“放大”居中。我看到你可以在 SpriteBatch.Draw 上指定一个旋转原点,但它会为每个精灵设置它,我想旋转整个场景。
【问题讨论】:
您正在寻找的转换是这样的:
Matrix Transform = Matrix.CreateTranslation(-Position)
* Matrix.CreateScale(scale)
* Matrix.CreateRotationZ(angle)
* Matrix.CreateTranslation(GraphisDevice.Viewport.Bounds.Center);
【讨论】: