Java Libgdx中的奇怪缩放

Java Libgdx中的奇怪缩放,java,android,libgdx,2d,Java,Android,Libgdx,2d,我试着把一个精灵拉到屏幕上。 首先,我将精灵的原点设置在屏幕的中心。因为它是安卓设备,所以我有几个页面要滚动到最后。根据我的经验,宽度*2涵盖了额外的距离 mSprite.setOrigin(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()/2); //these return 1080 and 960 on my device 接下来,我设置精灵的X和Y相对于原点: mSprite.setPosition(mSprite.getOriginX

我试着把一个精灵拉到屏幕上。 首先,我将精灵的原点设置在屏幕的中心。因为它是安卓设备,所以我有几个页面要滚动到最后。根据我的经验,宽度*2涵盖了额外的距离

mSprite.setOrigin(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()/2);
//these return 1080 and 960 on my device
接下来,我设置精灵的X和Y相对于原点:

mSprite.setPosition(mSprite.getOriginX()-mSprite.getWidth()/2, mSprite.getOriginY()-mSprite.getHeight()/2);
//sprite width and height are 1440 and 1280
现在用
mSprite.draw(批处理)

用肉眼看,它不会掉头。测量完距离后,没有差别

现在我应用一个标尺:

mSprite.setScale(1.2f, 1.2f);
结果:

如您所见,缩放后,精灵不再显示在中心

为什么??我做错了什么?如果这就是它应该如何工作的话,有谁能推荐一个可行的解决方案来统一缩放精灵


感谢您不要使用整个屏幕坐标来设置精灵的原点,您应该使用精灵的宽度和高度:

mSprite.setOrigin(mSprite.getWidth()/2f, mSprite.getHeight()/2f);
精灵使用在精灵左下角具有(0,0)的单独坐标系

由于精灵的原点不会影响您设置位置的方式(它将始终位于左下角)

将位置设置为中间:

mSprite.setPosition(screenWidth/2f-mSprite.getWidth/2f,screenHeight/2f - mSprite.getHeight/2f);
这还假设您的相机处于位置(屏幕宽度/2f、屏幕高度/2f)

如果您的相机不看(屏幕宽度/2f,屏幕高度/2f),而是定位在(0,0),则将精灵的位置设置为如下所示:

mSprite.setPosition(-mSprite.getWidth/2f, - mSprite.getHeight/2f);

那是因为我想把它画在屏幕中间。我想缩放它,使它充满屏幕。由于缩放是围绕原点进行的,它必须位于屏幕的中间。我尝试了你的建议(没有比例),它把黑色矩形放在左下角。在我缩放它之后,它在右上角进一步扩展。细节的丢失并不明显,因为它只是一个黑色矩形。但是,如果是一个适当的背景,缩放后,左下角将不可见,因为它会在屏幕外扩展。设置精灵起源到屏幕原点实际上不会在中间设置精灵。相反,它可能会将它设置在屏幕外的某个位置(只是猜测我不知道精灵或屏幕的大小)。你在这里漏掉了一点。我将编辑我的答案。好的,现在我明白了。谢谢