LibGDX - 如何让我的屏幕显示"LEVEL COMPLETE"?



我希望安卓设备上的游戏屏幕变为显示"关卡完成"的屏幕。我制作了一个中间有此消息的.png文件,并希望在播放器与 Flag发生冲突时将其加载到当前屏幕的顶部(我猜就像一个片段?)(为了碰撞检测,两者都被建模为矩形)。这是我的标志类

public class Flag extends GameObject {
private Sprite spr;
private Rectangle playerRect;
private boolean isOverlapping;
Player player;
private Rectangle flagRect;
public Flag(Sprite spr, float xPos, float yPos) {
    super(spr, xPos, yPos);
    player = Player.getInstance(null);
    setxPos(xPos);
    setyPos(yPos);
    flagRect = new Rectangle(getxPos(), getyPos(), getSprite().getWidth(),
            getSprite().getHeight());
}
public void update() {
    playerRect = new Rectangle(player.getxPos(), player.getyPos(), player
            .getSprite().getWidth(), player.getSprite().getHeight());
    isOverlapping = playerRect.overlaps(flagRect);
    if(isOverlapping) {
...
}
}

}

我把 levelComplete.png 放在我的资产文件夹中,有点不确定从这里开始。有什么建议吗?将不胜感激

需要做的就是从图像中制作Texture并使用SpriteBatch将其绘制在屏幕上。这可以通过这样的事情来实现:

public Texture levelComplete = new Texture(Gdx.files.internal("assets/imageName.png"));
public SpriteBatch batch = new SpriteBatch();
public render(){
    batch.begin();
    if(isOverlapping){
        batch.draw(levelComplete, x, y);
    }else{
        // render game
    }
    batch.end();
}

请注意,您可能希望放置一些计时器并在 5 秒后停止绘制Texture或放置某种"确定"按钮。否则,您将陷入相同的Texture

与其创建包含文本的图像"Level Complete",不如使用BitmapFont用您喜欢的任何字体将其写在屏幕上

首先选择您的字体(您可以使用 Hiero 等工具生成您想要的任何字体)将它们放在资产文件中并使用这行代码加载它们

textFont = new BitmapFont(Gdx.files.internal("nameFont.fnt"), gdx.files.internal("nameFont.png"), false);

然后你只需要在你想要的位置写你的文本

textFont.draw(spritebatch, "Level Complete", x, y)

希望对您有所帮助!

最新更新