我正在开发一个可视化n体粒子模拟的程序。为此,我创建了一个相机,用于将粒子位置投影到屏幕上。然后,使用spritebatch将这些粒子渲染到正确的位置。但是,要使其工作,坐标系的原点必须位于屏幕的左下角。通常情况并非如此,相反,在所有情况下,原点位于屏幕的四分之一左右,并且在调整屏幕大小时会发生变化。
我如何保证坐标系原点始终位于屏幕的左下方,而不是在任一轴上提升几百个像素?
谢谢。
答案 0 :(得分:0)
我解决了我的问题。而不是使用:
sprite.draw(batch);
我用过:
batch.setColor(color);
batch.draw(sprite.getTexture(),sprite.getX(),sprite.getY(),sprite.getWidth()*sprite.getScaleX(),sprite.getHeight()*sprite.getScaleY());
我不知道为什么会这样。
答案 1 :(得分:0)
如果你决定使用精灵,你应该坚持使用建议的工作流程并用以下方法绘制:
sprite.draw(batch);
我的意思是,如果要获取纹理并绘制它们,使用精灵的目的是什么?
当您在位置(0,0)处将纹理绘制到屏幕时,这意味着它的左下角将位于屏幕左下角。那个精灵的“热点”或“原点”默认位于它的左下角。
但您可以使用setOrigin方法更改它:
也就是说,原点是精灵的“中心”,因此,如果它旋转,它将围绕该点旋转。此外,当您在某些坐标处绘制精灵时,精灵原点将精确地位于这些坐标处。这样您就不必调整精灵绘图位置。
检查该页面有哪些sprite类的方法......