Libgdx中的缩放比例很大

时间:2014-05-08 17:04:10

标签: java android libgdx 2d

我试图将精灵拉伸到屏幕边界。 首先,我将精灵的原点设置为屏幕的中心。由于它是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)

绘制它

left right

肉眼看不出来。测量距离后,没有区别。

现在我申请一个比例:

mSprite.setScale(1.2f, 1.2f);

结果:

left right

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

为什么呢?我究竟做错了什么?如果这是它应该如何工作的,那么有人可以推荐一个可行的解决方法来统一缩放精灵吗?

由于

1 个答案:

答案 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);