我在 XNA 中有一个精灵对象。
它有大小、位置和旋转。
如何将一个点从屏幕坐标转换为精灵坐标?
谢谢,
西南
问问题
3556 次
4 回答
3
您需要为您的精灵计算变换矩阵,将其反转(因此变换现在从世界空间-> 局部空间)并通过反转矩阵变换鼠标位置。
Matrix transform = Matrix.CreateScale(scale) * Matrix.CreateRotationZ(rotation) * Matrix.CreateTranslation(translation);
Matrix inverseTransform = Matrix.Invert(transform);
Vector3 transformedMousePosition = Vector3.Transform(mousePosition, inverseTransform);
于 2010-01-05T20:25:59.873 回答
0
我认为它可能就像使用Contains
on 方法一样简单Rectangle
,矩形是你的精灵的边界框。我已经在 XNA 中以这种方式实现了拖放;我相信Contains
基于 x 和 y 的测试是屏幕坐标。
于 2009-12-17T18:46:35.407 回答
0
您可能会发现以下 XNA 拾取示例很有用:
于 2009-12-17T19:22:58.860 回答
0
一种解决方案是对精灵的原始未旋转边界框进行测试。因此,给定 2D 屏幕矢量 (x,y):
- 将 2D 向量转换为局部精灵空间: (x,y) - (spritex,spritey)
- 应用反向精灵旋转
- 针对边界框执行命中测试
通过考虑精灵形状,命中测试当然可以更准确。
于 2009-12-17T09:26:11.217 回答