在libgdx游戏中显示分数

时间:2016-01-25 01:54:39

标签: java android libgdx 2d-games

所以我无法在我正在制作的游戏中显示得分。我想知道我该怎么做呢?这就是我到目前为止所做的:

package com.catgame.game;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.InputProcessor;
import com.badlogic.gdx.audio.Music;
import com.badlogic.gdx.audio.Sound;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;

public class CatGame extends ApplicationAdapter implements InputProcessor {
SpriteBatch batch;
Sprite cat;
OrthographicCamera camera;
final float CAT_WIDTH = 0.75f;
final float CAT_HEIGHT = 0.50f;
Sound meow;

int score = 0;
String scorePrint;
BitmapFont scoreFont;


@Override
public void create () {
    batch = new SpriteBatch();
    cat = new Sprite(new Texture(Gdx.files.internal("Cat.png")));
    cat.setSize(CAT_WIDTH,CAT_HEIGHT);
    scoreFont = new BitmapFont(Gdx.files.internal("score.fnt"));
    float aspectRatio = (float)Gdx.graphics.getHeight()/
            (float)Gdx.graphics.getWidth();
    scoreFont.getData().setScale(0.5f);


    camera = new OrthographicCamera(CAT_HEIGHT * aspectRatio,
                                    CAT_HEIGHT);
    camera.position.set(CAT_WIDTH/2,CAT_HEIGHT/2,0);

    meow = Gdx.audio.newSound(Gdx.files.internal("Meow.wav"));

    Gdx.input.setInputProcessor(this);

    scorePrint = "Hello";


}

@Override
public void render () {
    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    camera.update();
    batch.begin();
    batch.setProjectionMatrix(camera.combined);
    //cat.draw(batch);
    scoreFont.draw(batch,scorePrint,camera.position.x,camera.position.y);
    batch.end();
}

我尝试过scoreFont.draw()方法,但它似乎没有用。不知道为什么,也许我的定位是错误的,因为我有一个相机或其他东西。但是当我试图使用绘制字体时,没有出现任何内容。下图中的红色圆圈显示了我想要得分的位置。

http://imgur.com/gallery/ywFF6SZ/new

3 个答案:

答案 0 :(得分:1)

在渲染方法中绘制字体并更改字体颜色或背景颜色。这可能是因为黑色背景颜色与BitmapFont颜色匹配。

答案 1 :(得分:0)

你需要在渲染函数中绘制得分(或者你想在屏幕上看到的任何东西),因为每个渲染都会清除画布并重新绘制。

答案 2 :(得分:0)

你画的字体太大了。如果在绘制字体之前没有指定字体比例,则会以一个字体像素到一个世界单位的比例绘制它。在您的情况下,您的相机高度小于1,因此您只能看到文本中第一个字母的一个像素的一小部分,这可能只是空白区域。设置相机后,在字体上调用{{1}},使用适当的比例将其调低到您想要的大小。