Libgdx中的java奇怪伸缩
我想把一个精灵拉到屏幕上。 首先,我将精灵的原点设置在屏幕的中心。因为它是安卓设备,所以我有几个页面要滚动到最后。根据我的经验,宽度*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(batch)
来画它
用肉眼看,它不会掉头。测量完距离后,没有差别
现在我应用一个标尺:
mSprite.setScale(1.2f, 1.2f);
结果:
正如你所见,缩放后,精灵似乎不再位于中心
为什么?我做错了什么?如果这就是它应该如何工作的话,有谁能推荐一个可行的解决方案来统一缩放精灵
谢谢
# 1 楼答案
与其使用整个屏幕坐标来设置精灵的原点,不如使用精灵的宽度和高度:
精灵使用在精灵左下角具有(0,0)的单独坐标系
因为精灵的起源不会影响你设置位置的方式(它总是在左下角)
将位置设置为中间:
这还假设您的相机处于位置(屏幕宽度/2f、屏幕高度/2f)
如果你的相机不看(屏幕宽度/2f,屏幕高度/2f),而是定位在(0,0),那么设置精灵的位置如下: