gpt4 book ai didi

java - Libgdx 中奇怪的缩放

转载 作者:行者123 更新时间:2023-12-01 13:00:32 26 4
gpt4 key购买 nike

我正在尝试将 Sprite 均匀地拉伸(stretch)到屏幕边界。首先,我将 Sprite 的原点设置为屏幕中心。由于它是 Android 设备,因此我需要滚动几个页面才能到达末尾。根据我的经验,宽度*2 覆盖了额外的距离。

mSprite.setOrigin(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()/2);
//these return 1080 and 960 on my device

接下来我设置 Sprite 相对于原点的 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

如您所见,缩放后, Sprite 不再位于中心。

为什么?我究竟做错了什么?如果这就是它应该工作的方式,任何人都可以推荐一个可行的解决方法来统一缩放 Sprite 吗?

谢谢

最佳答案

不应使用整个屏幕坐标来设置 Sprite 的原点,而应使用 Sprite 的宽度和高度:

mSprite.setOrigin(mSprite.getWidth()/2f, mSprite.getHeight()/2f);

Sprite 使用单独的坐标系,其左下角为 (0,0)。

因为 Sprite 的原点不会影响你设置位置的方式(它总是在左下角)

将位置设置为中间:

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

这还假设您的相机位于 (screenWidth/2f,screenHeight/2f) 位置。

如果你的相机没有看着(screenWidth/2f,screenHeight/2f)而是位于(0,0),那么设置 Sprite 的位置如下:

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

关于java - Libgdx 中奇怪的缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23548173/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com