私は、複数のシン・プラットフォームが作成される単純なゲームを作ろうとしています。私はすべてが正しく設定されていると思うし、デバッグによって、プラットフォームが適切に(ランダムオフセットで)作成されていることが分かりました。問題は、作成された最後のプラットフォームだけがレンダリングされ、すべてではありません。LibGDX - すべてのスプライトがレンダリングされているわけではありません
private class Platform{
private Vector2 mVelocity;
private Vector2 mPosition;
private Sprite mTexture;
public Platform(int x, int y, int w, int h){
mPosition = new Vector2(x, y);
mVelocity = new Vector2(0, 0);
mTexture = AssetLoader.mPlatformTexture;
mTexture.setSize(w, h);
}
public void Update(float delta){
mTexture.setPosition(mPosition.x, mPosition.y);
}
public Sprite GetTexture(){
return mTexture;
}
}
プラットフォームを再帰的に作成され、ランダム使用して、配列リストに追加されます。
は、私は、プラットフォームの情報(位置、スプライト)を保持している内部プライベートクラスが含まれているプラットフォームを管理するためのクラスを使用しますオフセット:
public Platforms(){
mPlatforms = new ArrayList<Platform>();
AddPole(50);
}
private void AddPole(int x){
if(x < Gdx.graphics.getWidth()){
mPlatforms.add(new Platform(x, RandomInRange(-240, -400), 20, 480));
AddPole(x + RandomInRange(100, 200));
}
}
最後に、プラットフォームが更新およびレンダリングされます:
@Override
public void render(float frameTime) {
mRunTime += frameTime;
mPlatforms.Update(frameTime);
mCharacter.Update(frameTime);
mCamera.update();
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
mBatcher.setProjectionMatrix(mCamera.combined);
mBatcher.begin();
mPlatforms.Render(mBatcher);
mCharacter.Render(mBatcher);
mBatcher.end();
}
...
public void Update(float delta){
for(int i = 0; i < mPlatforms.size(); i++){
mPlatforms.get(i).Update(delta);
}
}
public void Render(SpriteBatch batcher){
for(int i = 0; i < mPlatforms.size(); i++){
mPlatforms.get(i).GetTexture().draw(batcher);
}
}
しかし、見ることができるように、1つのプラットフォーム(最後に追加されるもの)のみが描画されます。
私はすぐに明らかであるビット愚かな何かをやっていますか?私はちょうどLibGDXを使いこなすようになりましたので、どんな助けもありがとうございます。
それは意味があり、働いてくれてありがとう。 – Daniel