Libgdx在屏幕控制上创建

时间:2014-01-04 06:46:03

标签: android libgdx box2d

我正在使用libgdx框架来创建游戏。我正在尝试创建屏幕按钮/控件。

目前,我有一个

class LevelOne that implements Screen. 

这个类有一个私有变量世界(来自Box2d)

我想添加一个     带有Textbuttons或Libgdx Touchpad到Box2d世界的表。 但是,我不知道该怎么做。

接下来,我知道我可以在Libgdx Stage中添加表格或触摸板。无论如何都要让Libgdx阶段和Box2d世界一起工作,我可以在Box2d世界中添加触控板或表格。

2 个答案:

答案 0 :(得分:9)

对于屏幕控制,你可以这样做:

制作一个将为控件修复的新凸轮:

OrthographicCamera guicam = new OrthographicCamera(480, 320);
guicam.position.set(480/2F, 320/2F, 0);

为每个控件创建一个(libgdx)矩形:

Rectangle wleftBounds = new Rectangle(0, 0, 80, 80);
Rectangle wrightBounds = new Rectangle(80, 0, 80, 80);

创建一个新的Vector3来保存未投影的触摸坐标:

Vector3 touchPoint = new Vector3();

然后您可以轮询输入以查看用户是否正在触摸这些矩形:

//in render method
for (int i=0; i<5; i++){
    if (!Gdx.input.isTouched(i)) continue;
    guicam.unproject(touchPoint.set(Gdx.input.getX(i), Gdx.input.getY(i), 0));
    if (wleftBounds.contains(touchPoint.x, touchPoint.y)){
        //Move your player to the left!
    }else if (wrightBounds.contains(touchPoint.x, touchPoint.y)){
        //Move your player to the right!
    }
}

注意我正在检查前5个触摸索引,那是因为你肯定想要同时使用控件(例如,在向右移动时跳转)。

最后但并非最不重要的是,您需要在控件上绘制一些漂亮的图形:

batch.draw(leftRegion, wleftBounds.x, wleftBounds.y, wleftBounds.width, wleftBounds.height);
batch.draw(rightRegion, wrightBounds.x, wrightBounds.y, wrightBounds.width, wrightBounds.height);

答案 1 :(得分:0)

如果您想要包含HUD阶段

创建HUD矩阵(导入com.badlogic.gdx.math.Matrix4):

HUDMatrix = camera.combined.cpy();
HUDMatrix.setToOrtho2D(0, 0, wwidth, wheight);

然后画出HUD

batch.setProjectionMatrix(HUDMatrix);
batch.begin();
    stage.draw(batch)
batch.end();