2D游戏角色坐标与屏幕坐标

时间:2011-03-03 08:43:13

标签: xna physics render sprite

我正在XNA中开发一款使用Farseer物理引擎的游戏,它基本上是一款2d平台游戏。我无法解决绘制精灵的方法与物理引擎所需的单位。

例如,我有一个人的精灵,物理形状只是0.8 x 1.8(米),位置也是米。使重力和真实世界的缩放变得非常简单。 (我也喜欢我在左下方的起源,但我可以把思维颠倒过来)

然而,在2d中渲染的标准方法是SpriteBatch.Draw,它以1:1的像素比率工作,原点位于左上角。

协调这个的标准方法是什么?我最初只是手动计算出矩形的缩放位置/大小,并使用SpriteBatch的源/目标参数,但它看起来很狡猾和缓慢。理想情况下,我想设置一个投影矩阵,然后使用物理对象中的信息绘制所有内容。唉,它所需的所有矩形都是整数,而不是浮点数,所以它不能很好地运作......

在另一个项目(OpenGL)中,我简单地将我的视图矩阵设置为合适的大小,并在其上渲染带有纹理的四边形。这是我应该如何在XNA中接近它?或者是否有人使用XNA的秘密方法?

2 个答案:

答案 0 :(得分:0)

我认为您正在寻找的是“相机虚拟化”,这里有一个很好的教程> http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/

答案 1 :(得分:0)

我最终创建了一个设置顶点,使纹理四边形从(-0.5,-0.5)到(0.5,0.5),并在绘制时将其缩放/平移到适当的位置。

这提供了1:1的绘制/物理对象比率,使一切变得简单。我会遇到不同分辨率的精灵大小问题,但我认为这是一个很小的代价 - 并且通过小心精灵大小来规避。

如果有人没有提出更好的解决方案,我会将此标记为答案。