plo*_*su2 1 java libgdx scene2d
我在游戏画面中使用了一个舞台.在这个阶段,我有像游戏地图这样的演员(玩家可以移动,舞台的镜头移动并缩放(或重新定位)以保持视口在地图内),玩家和其他游戏内容.然后我通过扩展Group添加我制作的HUD元素:
public class Hud extends Group implements Disposable {
Run Code Online (Sandbox Code Playgroud)
在本课程中,我定义了一个新的OrthographicCamera:
hudCamera = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
Run Code Online (Sandbox Code Playgroud)
我想用这台相机让HUD固定在屏幕上.我像这样画画:
@Override
public void draw(SpriteBatch batch, float parentAlpha) {
batch.setProjectionMatrix(hudCamera.combined);
//Then draw my HUD stuff
}
Run Code Online (Sandbox Code Playgroud)
绘图工作正常,但问题是(触摸和其他)事件.他们的坐标错误.我该如何解决这个问题.我试图覆盖命中(float x,float y,boolean touchable)方法,并考虑覆盖localToParentCoordinates和parentToLocalCoordinates方法.但是我会把它放在哪里(乘以hudCamera.combined就像绘图时那样)?或者我认为这一切都错了?
我也担心,当我在舞台的相机中使用变焦时,它会弄乱坐标.这是现实吗?
flo*_*hge 12
对于创建HUD,您通常可以在屏幕上使用多个阶段,这些阶段将在彼此之上呈现.您甚至可以有两个以上,例如,当应用程序暂停并恢复时,在HUD顶部呈现的暂停对话框...
您只需要确保在render() - 方法中按正确的顺序绘制它们:
public void render(float delta) {
scene.act(delta);
hud.act(delta);
pauseDialog.act(delta);
scene.draw();
hud.draw();
pauseDialog.draw();
}
Run Code Online (Sandbox Code Playgroud)
这样,您可以根据需要创建不同的坐标系.特别是在HUD中使用字体和标签时,它应该具有与像素大小匹配的坐标系,例如setViewport(1280,768,true);或类似,而您的场景可以具有完全不同的坐标系.
| 归档时间: |
|
| 查看次数: |
4478 次 |
| 最近记录: |