所以,感谢这个委员会的许多回复,我对引擎盖下的某些内容有了更好的理解,但我只是需要更多一点才能得到一个明确的理解。因此,我通过里默的教程部分阅读这里:XNA和矩阵
http://www.riemers.net/eng/Tutorials/XNA/Csharp/Series2D/Coll_Detection_Matrices.php
我会用马车例子,因为它是相当简单的。
因此该系列的马车转换是这样的:
1: Matrix.Identity;
2: Matrix.CreateTranslation(xPos, yPos, 0)
3: Matrix.CreateScale(playerScaling)
4: Matrix.CreateTranslation(0, -carriage.Height, 0)
所以我的问题是:
里默说:
1:如果我们只是渲染图像(或:与身份 变换),它将被渲染为 在其左上的原始大小 屏幕的一角。
- 我不明白这是适用的上下文。他只是指在绘制之前,所有图像都从0,0的世界原点开始?或者他说,当这些转变生效时,物体的起源现在将被放置在左上角并被转回到世界起源?
2:首先,在滑架的图像被移动以便它的左上点在指定为SpriteBatch.Draw方法第二个参数的位置。
- 好,所以他说这是引擎盖的抽签方法的过程中会发生什么情况下会发生什么,或者他只是路过相同的参数,你发送给什么画法?
好了,我们一直在使用定位在我们的世界/屏幕空间这些矩阵的事情。当你缩小某些东西时,我不明白它为什么会根据物体的局部空间开始移动。例如,我们的第一个平移矩阵根据世界/屏幕空间而移动,但现在他声明“它在它自己的Y轴上移动”。
为什么身份矩阵是可选的?
4:最后,这是最有挑战性的步骤:在图像上移动的Y轴,因为在我们的方法SpriteBatch.Draw我们指定(0,carriageTexture.Height)为原点。非常重要:它被移动到它自己的Y轴,已被缩小。因此,不要移动超过39个屏幕像素,滑块将会垂直移动超过39 * 0.4 = 16像素像素(因为carriageTexture.Height = 39且playerScaling = 0.4)。
因此,我有连接回抽签方法与这些矩阵乘法,用什么样的对象走向世界起源的交易是,为什么创建翻译转移其行为的麻烦。
您也可以在creators.xna.com论坛上提问这个问题。 – 2010-08-28 17:07:14