我试图将精灵拉伸到屏幕边界。 首先,我将精灵的原点设置为屏幕的中心。由于它是Android设备,我有几个页面可以滚动到达终点。根据我的经验,宽度* 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);
结果:
如您所见,缩放后,精灵不再显示在中心位置。
为什么呢?我究竟做错了什么?如果这是它应该如何工作的,那么有人可以推荐一个可行的解决方法来统一缩放精灵吗?
由于
答案 0 :(得分:1)
不是使用整个屏幕坐标来设置精灵的原点,而应该使用精灵的宽度和高度:
mSprite.setOrigin(mSprite.getWidth()/2f, mSprite.getHeight()/2f);
精灵使用单独的坐标系,在精灵的左下角有(0,0)。
由于精灵的起源不会影响你设定位置的方式(它总是在左下角)
将位置设置为中间位置:
mSprite.setPosition(screenWidth/2f-mSprite.getWidth/2f,screenHeight/2f - mSprite.getHeight/2f);
这也假定您的相机处于位置(screenWidth / 2f,screenHeight / 2f)。
如果您的相机没有看(screenWidth / 2f,screenHeight / 2f)而是位于(0,0),那么设置精灵的位置如下:
mSprite.setPosition(-mSprite.getWidth/2f, - mSprite.getHeight/2f);