我正在使用Java和Libgdx scene2d制作游戏。这是构造函数中的代码:
atlas = new TextureAtlas("gfx/button.pack");
skin = new Skin(atlas);
TouchpadStyle touchpadStyle = new TouchpadStyle();
touchpadStyle.background = skin.getDrawable("button.up");
touchpadStyle.knob = skin.getDrawable("button.down");
touchpadStyle.knob.setLeftWidth(20);
touchpadStyle.knob.setRightWidth(20);
touchpadStyle.knob.setBottomHeight(20);
touchpadStyle.knob.setTopHeight(20);
controller = new Touchpad(1f, touchpadStyle);
addActor(controller);
然后在resize()中执行以下操作:
public void resize(float width, float height) {
setViewport(width, height, true);
//TODO setting the bounds too small breaks the touchpad?
controller.setBounds( width*1f/16, height*1f/9, width/7f, width/7f);
}
问题在于,当我将屏幕(我运行桌面版本)的大小调整到足够小的宽度时,触摸板会以某种方式“反转”。当触摸触摸板时,背景似乎在顶部并且正在移动。它给出的方向(百分比X,百分比Y)也应该是负面的。
为什么会发生这种情况?如何防止它?
答案 0 :(得分:1)
如果你想拥有一个始终是屏幕1/7的控制器,你为什么要使用像素完美舞台?在你的resize方法中,为什么不这样做:
virtualStage.setViewport(MyGame.VIRTUAL_WIDTH, MyGame.VIRTUAL_HEIGHT, true);
virtualStage.getCamera().translate(-virtualStage.getGutterWidth(),-virtualStage.getGutterHeight(), 0);
Camera c = virtualStage.getCamera();
c.update();
如果您愿意,可以省略翻译(取决于您在右侧显示的内容)。我想知道在调整大小时改变控制器的界限是不是在搞乱它。