我刚刚开始学习LibGDX,而且我很慢。我已经看过很多关于如何在游戏中添加背景图像的教程,但是对于像我这样的初学者来说,大多数都已经过时或太难了。以下是我试图让图像显示的内容。
texture = new Texture(Gdx.files.internal("background.jpg"));
backgroundTexture = new TextureRegion(texture, 0, 0, 2048, 563)
不幸的是,它没有用。我运行了应用程序,屏幕仍然是黑色和平原。
就像我说的那样,我是新手,所以请尽可能简单地解释。
答案 0 :(得分:1)
您正在创建纹理,但之后您永远不会使用它。访问here以获取有关如何在屏幕上实际绘制内容的更多信息。如果这是令人困惑的话,我建议在继续使用库之前找到关于java的教程
答案 1 :(得分:1)
您只为texture
字段分配了一张图片,然后将其放入TextureRegion
字段中。您实际上并没有使用此方法,因为这发生在SpriteBatch.Begin()
和SpriteBatch.End()
。
在你的构造函数或create
方法中,你应该拥有你所做的:
public void create() {
//...
backgroundTexture = new TextureRegion(new Texture("background.jpg"), 0, 0, 2048, 563);
//Those are weird screen sizes btw (2048/563)
//...
}
在render
方法中,您应该拥有以下内容:
public void render() {
//...
batch.Begin();
batch.draw(backgroundTexture, 0, 0);
//I believe texture region takes the upper left corner as 0,0 and batch.Draw the bottom left.
//So you might need to do something like this:
batch.draw(backgroundTexture, 0, Gdx.graphics.getHeight());
batch.End();
//...
}
这至少应该为你画画。如果你的摄像机没有指向正确的坐标,那么显然你不会看到它或只是它的一部分。但是,如果你没有摆弄batch.setProjectionMatrix
你应该是好的。
Disclamer:我刚刚在文档中提供了一些帮助,因此它可能无法立即生效。
答案 2 :(得分:0)
在渲染方法上绘制
spritebatch.begin();
spritebatch.draw(texture,0,0,width_of _screen,height_of_screen);
spritebatch.end();
答案 3 :(得分:0)
package <<here your package name>>;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
public class MyGdxGame extends ApplicationAdapter {
SpriteBatch batch;
Texture img;
@Override
public void create() {
batch = new SpriteBatch();
img = new Texture("background.png");//name of your file.type
}
@Override
public void render() {
Gdx.gl.glClearColor(1,0,0,1);//the color of the backgrond if your image small than the windows
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
batch.begin();
batch.draw(img,0,0,1000,700);// image,x,y,wight,height
//this one for getting your image in center if it was icon or small image
//batch.draw(img,Gdx.graphics.getWidth()/2 - img.getWidth()/2,Gdx.graphics.getHeight()/2 - img.getHeight()/2);
//batch.draw(batch,text,Gdx.graphics.getWidth()/2,Gdx.graphics.getHeight()/2);
batch.end();
}
}
答案 4 :(得分:0)
我将使它变得简单: 您所做的是从 background.png 创建了一个名为“texture”的纹理 现在这只是意味着您将纹理加载到内存中。但是你想把它画在屏幕上。所以在你的 show() 方法中创建一个 Spritebatch。 Spritebatch 是一种帮助您在屏幕上绘制内容的工具。
private SpriteBatch batch;
@Override
public void show () {
batch = new SpriteBatch();
}
然后您必须使用 SpriteBatch 将背景绘制到屏幕上。
@Override
public void render(float delta) {
batch.draw(texture, 0, 0, 200, 200);
} // texture, X, Y, width, height
现在这将在屏幕上为您绘制纹理。但它不会填满你的屏幕。为了填满整个屏幕,我们必须让它和屏幕一样大。 您可以使用
获取屏幕高度Gdx.graphics.getHeight()
和宽度
Gdx.graphics.getWidth()