我在XNA中有一个精灵对象
它有尺寸,位置和旋转
如何将一个点从屏幕坐标转换为精灵坐标?
谢谢,
SW
答案 0 :(得分:3)
您需要计算精灵的变换矩阵,将其反转(因此变换现在来自世界空间 - >局部空间)并通过反转矩阵变换鼠标位置。
Matrix transform = Matrix.CreateScale(scale) * Matrix.CreateRotationZ(rotation) * Matrix.CreateTranslation(translation);
Matrix inverseTransform = Matrix.Invert(transform);
Vector3 transformedMousePosition = Vector3.Transform(mousePosition, inverseTransform);
答案 1 :(得分:0)
一种解决方案是针对精灵的原始未旋转边界框进行测试。 所以给定2D屏幕矢量(x,y):
通过考虑精灵形状,当然可以使命中测试更加准确。
答案 2 :(得分:0)
我认为它可能就像在Contains
上使用Rectangle
方法一样简单,矩形是精灵的边界框。我在XNA中以这种方式实现了拖放;我相信基于x和y的Contains
测试是屏幕坐标。
答案 3 :(得分:0)
您可能会发现以下XNA选取示例非常有用: