我在我的游戏屏幕中使用了一个舞台。在这个阶段,我有一些演员,比如游戏地图(玩家可以在其中移动,并且舞台的摄像机沿着移动并缩放(或重新定位)以将视口保持在地图内)、玩家和其他游戏内容。然后我添加了一个通过扩展 Group 制作的 HUD 元素:
public class Hud extends Group implements Disposable {
在这个类中,我定义了一个新的 OrthographicCamera:
hudCamera = new OrthographicCamera(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
我想用这台相机让 HUD 在屏幕上保持静止。我是这样画的:
@Override
public void draw(SpriteBatch batch, float parentAlpha) {
batch.setProjectionMatrix(hudCamera.combined);
//Then draw my HUD stuff
}
绘图工作正常,但问题是(触摸和其他)事件。他们有错误的坐标。我该如何解决这个问题。我试图覆盖 hit(float x, float y, boolean touchable) 方法并考虑覆盖 localToParentCoordinates 和 parentToLocalCoordinates 方法。但是我会在其中放入什么(在绘图时乘以 hudCamera.combined 或类似的东西)?还是我认为这一切都错了?
我还担心,当我在舞台的相机中使用变焦时,它会弄乱坐标。这是现实吗?