我正在根据ww2军队的动向开展小型游戏。我第一次开始用相机环顾四周,然后我写了一个程序,慢慢地移动一个排在我点击的排,然后停在那里。 UNTIL那里一切都很好,但后来我试图让它工作,同时移动相机,所以矩阵不是标准矩阵。我没有把排的位置推到正确的位置去工作。 如果有人能告诉我我要做些什么才能让它发挥作用,我将非常感激
移动代码:
ArrayA
也许我的相机课就是问题所在 相机COED
ArrayB
感谢您抽出时间仔细研究它。
答案 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