【发布时间】:2015-02-11 23:25:53
【问题描述】:
这是从第 6 天开始的小鸟娱乐教程 -http://www.kilobolt.com/day-6-adding-graphics---welcome-to-the-necropolis.html
这是我在游戏中用于纹理的图像文件。它是一个 256 像素 x 64 像素的 .png 文件。
这是我用于加载纹理的类以及我希望 SpriteBatch 绘制的特定 TextureRegion(纹理的一部分)。
public class AssetLoader {
public static Texture texture;
public static TextureRegion bg;
public static void load() {
texture = new Texture(Gdx.files.internal("data/texture.png"));
bg = new TextureRegion(texture, 0, 0, 136, 43);
}
}
And I call AssertLoader.load(), along with setting up game screen from
public class MyGdxGame extends Game{
@Override
public void create() {
AssetLoader.load();
setScreen(new GameScreen());
}
}
And inside GameScreen.java
public class GameScreen implements Screen {
//delegate render task
private GameRenderer renderer;
public GameScreen() {
float screenHeight = Gdx.graphics.getHeight();
float screenWidth = Gdx.graphics.getWidth();
float gameWidth = 136;
float gameHeight = screenHeight / (screenWidth / gameWidth);
renderer = new GameRenderer((int)gameHeight);
}
}
And inside GameRederer, the class I delegate to render the game
public class GameRenderer {
private int gameHeight;
private SpriteBatch batch;
private OrthographicCamera cam;
public GameRenderer(int gameHeight) {
this.gameHeight = gameHeight;
cam = new OrthographicCamera();
batch = new SpriteBatch();
batch.setProjectionMatrix(cam.combined);
cam.setToOrtho(true, 136, gameHeight);
}
public void render() {
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
batch.disableBlending();
batch.draw(AssetLoader.bg, 0, (gameHeight/2) + 23, 136, 43);
batch.end()
}
}
我在运行桌面版游戏时得到的是上面显示的黑屏(黑色是因为我用这些代码行将背景设置为黑色
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
有人知道为什么 SpritchBatch 绘图没有显示吗?我用这行代码提取了我想要的纹理的纹理部分(从 0,0 开始,宽度为 136,高度为 43) - 使用 GIMP - 找出要切割的部分。
bg = new TextureRegion(texture, 0, 0, 136, 43);
我还放了一些日志语句(将它们从视图中删除)以确保在绘制之前,bg 的宽度和高度设置正确,它们是正确的。问题不可能是游戏高度,因为我使用了 print 语句,发现它是 204,这意味着这个表达式 (gameHeight/2) + 23 将计算为 125,介于 0 和游戏高度之间。
我也查看了其他线程。 我的问题不能是libgdx spritebatch not rendering textures,因为 SpriteBatch 应该覆盖背景。 它不能是LibGDX: Android SpriteBatch not drawing,因为我在桌面上运行我的,而不是安卓。
【问题讨论】:
-
好的,让我给你一些一般性的建议。我建议你阅读“学习 libGDX 游戏开发”。这是一本适合初学者的好书,它将为您提供有关 libgdx 的基本知识。如果你没有钱,你知道该怎么做,对吧?您是否还尝试从该教程下载源代码?也许你错过了什么。这是我的源代码github.com/nikoliazekter/JustSimpleTD。它可以帮助你。
-
你在哪里调用gameRenderer.render()?
-
grimdradar22,我知道它被调用是因为背景是我指定的黑色背景。
-
nikoliazekter,我认为这个教程系列非常适合初学者。但是,是的,我下载了源代码。我仍在努力寻找差异
-
请注意,本教程适用于比当前版本更旧的 libgdx 版本。您必须在此过程中解决一些其他问题。
标签: java android libgdx sprite spritebatch