Java Spritebatch不显示某些精灵
我正在创建一个自上而下的射击游戏,并使用单个精灵批渲染多个精灵Java Spritebatch不显示某些精灵,java,libgdx,spritebatch,Java,Libgdx,Spritebatch,我正在创建一个自上而下的射击游戏,并使用单个精灵批渲染多个精灵 public void render(SpriteBatch sb) { // SHOW PLAYER HP Game.drawString("Hp: " + currentHp, 50, 450); // SHOW CURRENT WEAPON Game.drawString("Weapon: " + weapons.get(currentWeapon).getClass().getSimpleNa
public void render(SpriteBatch sb) {
// SHOW PLAYER HP
Game.drawString("Hp: " + currentHp, 50, 450);
// SHOW CURRENT WEAPON
Game.drawString("Weapon: " + weapons.get(currentWeapon).getClass().getSimpleName(), 50, 430);
// SHOW CURRENT WEAPON + BULLET
Game.drawString("Current Ammo: " + weapons.get(currentWeapon).getCurrentBullet(), 50, 410);
// SHOW FPS
Game.drawString(String.valueOf("FPS: " + Gdx.graphics.getFramesPerSecond()), 50, 390);
// SHOW PLAYER SPEED
Game.drawString("Player Speed: " + (int) (body.getLinearVelocity().x * Game.PPM) + " , " + (int) (body.getLinearVelocity().y * Game.PPM), 50, 370);
// RENDER PLAYER SPRITE
sprite.draw(sb);
// RENDER WEAPON
weapons.get(currentWeapon).render(sb);
// RENDER BOMBHELD
bombHeld.render(sb);
// RENDER BULLETS
for (int i = 0; i < bullets.size(); i++) {
bullets.get(i).render(sb);
}
}
问题是spritebatch不渲染Bombhold,当我在该点结束spritebatch并再次使用begin时,它工作正常,显示sprite
这样结束和开始很好:
// RENDER PLAYER SPRITE
sprite.draw(sb);
// RENDER WEAPON
weapons.get(currentWeapon).render(sb);
sb.end();
sb.begin();
// RENDER BOMBHELD
bombHeld.render(sb);
// RENDER BULLETS
for (int i = 0; i < bullets.size(); i++) {
bullets.get(i).render(sb);
}
//渲染播放器精灵
精灵画(某人);
//渲染武器
获得(当前的武器)给予(某人);
(某人结束);
某人开始做某事;
//使爆炸停止
使(某人);
//渲染子弹
对于(int i=0;i
我看了这堂课,我确信这堂课没有什么错。
没有一个精灵与另一个重叠
spritebatch是否有精灵限制或类似的限制?我是否应该使用多个开始和结束
谢谢您的帮助。SpriteBatch有一个限制,但是一旦达到这个限制,它应该自动调用
flush
。你能展示一下游戏.抽绳法吗?你是怎么画那些字符串的?在调用另一个批处理的begin
之前,请记住为该批处理调用end
。一次只能有一个活动的Batch
。public static void drawString(String str,float x,float y){testSb.begin();testFont.draw(testSb,str,x,y);testSb.end();}
我临时创建了drawString,但我意识到我在spritebatch中使用了spritebatch。我现在修复了它,但仍然是相同的问题。多亏了你,我意识到我在做其他事情,而不是渲染精灵。我编辑了渲染方法并对所有内容进行了排序。它现在工作正常。你能把解决方案作为答案发布吗?它将来可能会帮助别人。谢谢
// RENDER PLAYER SPRITE
sprite.draw(sb);
// RENDER WEAPON
weapons.get(currentWeapon).render(sb);
sb.end();
sb.begin();
// RENDER BOMBHELD
bombHeld.render(sb);
// RENDER BULLETS
for (int i = 0; i < bullets.size(); i++) {
bullets.get(i).render(sb);
}