根据libgdx中的屏幕大小设置actor大小

时间:2014-04-02 11:33:32

标签: android libgdx

我正在使用android中的libgdx开发一个简单的游戏。我创造了一个演员。我想根据屏幕大小调整actor的大小。任何人都可以建议我做一个简单的教程来做同样的事情

2 个答案:

答案 0 :(得分:3)

这取决于你如何设置舞台的视口。

假设您的舞台视口在resize()方法中设置为stage.setViewport(16,10,false)。 这样,您的屏幕将始终显示从左下角的(0,0)到右上角的(16,10)的区域...

如果您创建一个宽度= 8且高度= 5的Actor,它将始终是屏幕宽度的一半,屏幕高度的一半。

当然,上面的示例通常会在调整大小时扭曲屏幕...所以你可以使用setViewport(16,10,true);这样,你会保持纵横比,但可能需要调整大小或重新定位一些角色resize()方法,例如当它们显示在屏幕的右边缘时。

另一种方法是将视口设置为与屏幕上的像素相同的坐标系:stage.setViewport(width,height,false);(在resize(...) - 方法中)。这样,舞台坐标系中的一个单位等于屏幕上的一个像素。

执行此操作时,您必须在设置视口后调整resize()方法中的actor的大小:

actor.setSize(0.2f*stage.getWidth(), 0.2f*stage.getWidth() * actor.getHeight()/actor.getWidth()):

这样做总是让演员完全是屏幕宽度的五分之一,并且高度匹配,所以它不会变形。

希望这有点帮助...

答案 1 :(得分:2)

如果您使用的是最新版本(nightlies),您可能已经看过Viewport课程 这个课程就是你要找的。假设你有1600 * 900像素的监视器并且你设置了Viewport to 16 * 9Viewport中的每个单位都将是Screen的100px。 这意味着,如果您将Stage Viewport设置为16 * 9,则Actor的大小为1将为100 * 100px。如果您使用800 * 450px显示器,它将是50 * 50px大 还有不同的Viewport类型:

  • StretchViewport:您的Virtual Viewport被拉伸以填满整个Screen。因此,如果你有1600 * 900显示器和16 {10} Virtual Viewport,1x1 Actor将是100px宽,但只有90px高。所以纵横比不再相同了。
  • FitViewport:如果您的Virtual Viewport具有不同的宽高比,则Screen将填充黑条。所以在16 * 10虚拟视口的1600 * 900 Screen上,屏幕两侧的宽度为80px的柱子将为黑色((virtualWidth / wirtualHeight) * realHeight = realWidthphysicalWidth - realWidth = blackWidth,以使游戏位于中心双方blackWidth/2),保持宽高比。

还有其他人,但那些是最重要的2 imho。您可以在article i链接上阅读更多内容 如果您不使用最新的夜莺,则需要使用相机。 OrthographicCamera的构造函数采用视口宽度和高度。这些与视口相同。不同的是,它自动是一个“StretchViewport”,所以你必须像this tutorial一样手动设置glViewport。

我希望我能提供帮助。