0
我目前正在研究類似蠕蟲的遊戲。我生成隨機水平,其中包含每個x與相應的y的點數組。另外我有兩個數組,其中有一些x值,然後放置樹木和小屋。當用戶觸摸屏幕時,我使用Orthographic相機和翻譯方法來移動相機。爲了達到更高的水平,我決定只渲染當前可見部分的地圖。因爲我有一個BackgroundActor,它從相關信息中獲取相機的當前位置,我使用表面數組從水平類中獲取地圖的相應部分。然後我用ShapeRenderer渲染這些信息。然後我渲染道具(樹木和小屋)。問題是,當我拖動屏幕時,道具與表面沒有對齊。例如:我將地圖移動到左側,表面比道具向左移動得更快。我已經嘗試爲SpriteBatch和ShapeRenderer設置投影矩陣,但它沒有幫助。 代碼:Libgdx Image和ShapeRenderer在x軸上的不同行爲
@Override
public void draw(Batch batch, float parentAlpha) {
setBounds(); //gets the index for my map array from the camera
ShapeRenderer shapeRenderer = AndroidLauncher.gameScreen.shapeRenderer;
batch.end(); //needed, because otherwise the props do not render
shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
for (int x = 0; x < ScreenValues.screenWidth; x++) {
int y = level.getYForX(x + leftBound);
shapeRenderer.setColor(level.getUndergroundColor());
shapeRenderer.rectLine(x, 0, x, y - level.getSurfaceThickness(), 1);
shapeRenderer.setColor(level.getSurfaceColor());
shapeRenderer.rectLine(x, y - level.getSurfaceThickness(), x, y, 1);
}
shapeRenderer.end();
batch.begin();
for (int x = 0; x < ScreenValues.screenWidth; x++) {
int y = level.getYForX(x + leftBound);
if (level.getPropForX(x) != Level.PROP_NONE) {
if (level.getPropForX(x) == Level.PROP_TREE) y -= 10;
Image imageToDraw = getImageFromPropId(level.getPropForX(x)); //Images are setup in the create method of my Listener
imageToDraw.setPosition(x, y);
imageToDraw.draw(batch, parentAlpha);
}
}
}