我正在使用android中的libgdx开发一个简单的游戏。我创造了一个演员。我想根据屏幕大小调整actor的大小。任何人都可以建议我做一个简单的教程来做同样的事情
答案 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 * 9
,Viewport
中的每个单位都将是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 = realWidth
,physicalWidth - realWidth = blackWidth
,以使游戏位于中心双方blackWidth/2
),保持宽高比。还有其他人,但那些是最重要的2 imho。您可以在article i链接上阅读更多内容
如果您不使用最新的夜莺,则需要使用相机。 OrthographicCamera
的构造函数采用视口宽度和高度。这些与视口相同。不同的是,它自动是一个“StretchViewport”,所以你必须像this tutorial一样手动设置glViewport。
我希望我能提供帮助。