LibGDXとタイルマップで視差効果をゲームに加える必要があります。背景は、前景とは異なる速度で移動する必要があります。ドキュメントhttps://github.com/libgdx/libgdx/wiki/Tile-mapsで言った:LibGDX:タイルマップでの視差効果
個別に各レイヤをレンダリングし、すべての 層のためのビューを変更することにより、あなたはまた、視差効果を達成することができます。
現在の実装:同じ速度でレンダリングPlayScreenVariantTwo
、前景と背景を持つ:PlayScreenVariantOne
ですべての作品が、背景には、フォアグラウンド
public class PlayScreenVariantOne implements Screen {
private TextureAtlas atlas;
private OrthographicCamera gameCam;
private Viewport viewport;
private TmxMapLoader mapLoader;
private TiledMap map;
private OrthogonalTiledMapRenderer renderer;
...
// ...
// ... bla-bla-bla...
// ...
@Override
public void render(float delta) {
update(delta);
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
renderer.setView(gameCam);
renderer.render();
game.batch.setProjectionMatrix(gameCam.combined);
game.batch.begin();
player.draw(game.batch);
game.batch.end();
hud.stage.draw();
}
}
視差実装のように同じ速度で移動。視差効果が働きません! :*(
public class PlayScreenVariantTwo implements Screen {
private TextureAtlas atlas;
private OrthographicCamera gameCam;
private Viewport viewport;
private TmxMapLoader mapLoader;
private TiledMap map;
private OrthogonalTiledMapRenderer renderer;
...
// ...
// ... bla-bla-bla...
// ...
@Override
public void render(float delta) {
update(delta);
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
int[] backgroundLayers = { 7 };
int[] ground = { 9 };
renderer.setView(gameCam.combined, (gameCam.position.x - gameCam.viewportWidth/2 - 2), gameCam.position.y - gameCam.viewportHeight/2, gameCam.viewportWidth, gameCam.viewportHeight);
renderer.render(backgroundLayers);
renderer.setView(gameCam.combined, (gameCam.position.x - gameCam.viewportWidth/2)/10, gameCam.position.y - gameCam.viewportHeight/2, gameCam.viewportWidth * 10, gameCam.viewportHeight);
renderer.render(ground);
game.batch.setProjectionMatrix(gameCam.combined);
game.batch.begin();
player.draw(game.batch);
game.batch.end();
hud.stage.draw();
}
}
カメラはまだ同じ速度で動きますが、背景の半分をカットします。レイヤーの半分しか表示していないBG用のカメラ – Lugaru
第二の変種は、私が持っていたものと全く同じ結果を出します。 – Lugaru