用viewmatrix移动对象2d

时间:2016-07-21 05:52:20

标签: c# xna 2d

我正在根据ww2军队的动向开展小型游戏。我第一次开始用相机环顾四周,然后我写了一个程序,慢慢地移动一个排在我点击的排,然后停在那里。 UNTIL那里一切都很好,但后来我试图让它工作,同时移动相机,所以矩阵不是标准矩阵。我没有把排的位置推到正确的位置去工作。 如果有人能告诉我我要做些什么才能让它发挥作用,我将非常感激

移动代码:

ArrayA

也许我的相机课就是问题所在 相机COED

ArrayB

感谢您抽出时间仔细研究它。

1 个答案:

答案 0 :(得分:0)

我认为matrix是您的视图矩阵。该矩阵用于将位置从世界空间转换为相机空间。

您的鼠标位置在视图空间中,您希望将其转换为世界空间,因此另一方面。因此,您需要matrix的倒数。此外,Vector2.Transform()方法返回变换后的矢量。它不会改变原来的。所以现在,你不能使用任何转换的位置:

var invMatrix = Matrix.Invert(matrix);
mousePos = Vector2.Transform(mousePos, invMatrix);

您可能不希望转换oldPos,因为它已经存在于世界空间中(可能,我无法从代码片段中明确说明)。

顺便说一下,有一种更简单的方法可以检查testObjPos是否在mousePos附近。只需检查差异向量的长度:

if((testObjPos - mousePos).Length() < 1)
    //stop