我是libdgx开发的新手,也是游戏开发的新手。我正在阅读Andreas Oehlke撰写的“学习Libgdx游戏开发”一书,我正在努力开发自己的游戏。 我尝试添加背景时遇到问题。在书中,他使用了一种颜色,所以它非常简单。但我想从纹理图集中添加图像。图像很小,可以恢复所有屏幕,所以我想重复一遍。我不能使用regBackground.setWrap(TextureWrap.Repeat,TextureWrap.Repeat)因为regBackground不是纹理。我怎样才能正确解决问题?
public class Background extends AbstractGameObject {
private TextureRegion regBackground;
public Background () {
init();
}
private void init () {
dimension.set(1f, 1f);
regBackground = Assets.instance.levelDecoration.background;
}
public void render (SpriteBatch batch) {
TextureRegion reg = null;
reg = regBackground;
batch.draw(reg.getTexture(),
position.x, position.y,
origin.x, origin.y,
dimension.x, dimension.y,
scale.x, scale.y,
rotation,
reg.getRegionX(), reg.getRegionY(),
reg.getRegionWidth(), reg.getRegionHeight(),
false, false);
}
}
在我的Assets类中,我有这个代码来查找纹理图集中的区域:
public class AssetLevelDecoration {
public final AtlasRegion background;
public AssetLevelDecoration (TextureAtlas atlas) {
background = atlas.findRegion("background");
}
}
答案 0 :(得分:1)
我在解决问题方面取得了进展。我使用setWrap方法重复我的纹理:
public class Background extends AbstractGameObject {
private TextureRegion regBackground;
public Background (int width, int heigth) {
init(width, heigth);
}
private void init (int width, int heigth) {
dimension.set(width, heigth);
regBackground = Assets.instance.levelDecoration.background;
origin.x = -dimension.x/2;
origin.y = -dimension.y/2;
}
public void render (SpriteBatch batch) {
TextureRegion reg = null;
reg = regBackground;
Texture test = reg.getTexture();
test.setWrap(TextureWrap.Repeat, TextureWrap.Repeat);
batch.draw(test,
position.x + origin.x, position.y + origin.y,
test.getWidth(), test.getHeight(),
reg.getRegionX(), reg.getRegionY(),
reg.getRegionWidth(), reg.getRegionHeight()
);
}
}
现在,我得到了这个,但我只想重复我的背景图片(木方块)。
http://s24.postimg.org/c1m92ffwx/Capture_du_2013_11_12_15_49_03.jpg
问题是getTexture()恢复了所有图像,而不仅仅是我的背景。我该如何解决这个问题?
答案 1 :(得分:1)
我只想添加评论,但我没有代表。
要解决重复整个纹理的问题,而不仅仅是木制方形,你有两个选择。 A)将textureregion分离到单独的纹理上。 B)循环以重复绘制,这在性能方面应该可以忽略不计。
答案 2 :(得分:0)
答案 3 :(得分:-1)
更简单的方法是
batch.draw(imageReference,startX,startY,widthOfScreen,heightOfScreen);
batch.draw()是一个重载方法,所以只使用那些你需要的参数 语法只是一个伪代码
MOst importantlu这可能会使图像拉伸(取决于图像)。