[英]LibGDX - Not all sprites being rendered
我正在嘗試制作一個簡單的游戲,其中創建了多個瘦平台。 我相信一切都設置正確,並且通過調試,我發現平台創建正確(帶有隨機偏移)。 問題是,僅渲染最后創建的平台,而不渲染所有平台。
我使用一個類來管理平台,該類包含一個內部私有類,用於保存平台信息(位置,子畫面):
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);
}
}
但是可以看出,僅繪制了一個平台(要添加的最后一個平台)。
我在做些愚蠢的事情,立即顯而易見嗎? 我剛剛開始使用LibGDX,所以我們將不勝感激。
我不了解libgdx,但我想我知道您問題的解決方案。
每個平台具有相同的紋理,即:
mTexture = AssetLoader.mPlatformTexture;
因此,現在您更新平台的位置,然后調用:
mTexture.setPosition(mPosition.x, mPosition.y);
為每個平台更新相同的紋理。 這意味着在更新所有平台之后,您已將紋理放置到最后一個平台的位置。 然后繪制,然后在該位置繪制平台很多次。 一個在另一個之上。 您可以通過兩種方法解決此問題,或者為每個平台創建一個單獨的紋理實例(由於我不知道紋理類,我無法向您展示如何執行此操作),或者同時進行更新和繪制,例如所以:
public void UpdateAndDraw(float delta){
for(int i = 0; i < mPlatforms.size(); i++){
mPlatforms.get(i).Update(delta);
mPlatforms.get(i).GetTexture().draw(batcher);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.