我刚刚启动libgdx,这看起来很简单,但我不明白。 我在屏幕对象中的render方法将从WorldRenderer调用render方法:
public World world;
public void render() {
spriteBatch.begin();
drawBlocks();
drawBob();
spriteBatch.end();
if (debug)
drawDebug();
}
private void drawBob() {
Bob bob = this.world.getBob();
Log.e("inside drawBob",this.world.getBob().getPosition().x +"dadas");
bobFrame = bob.isFacingLeft() ? bobIdleLeft : bobIdleRight;
if(bob.getState().equals(State.WALKING)) {
bobFrame = bob.isFacingLeft() ? walkLeftAnimation.getKeyFrame(bob.getStateTime(), true) : walkRightAnimation.getKeyFrame(bob.getStateTime(), true);
}
spriteBatch.draw(bobFrame, bob.getPosition().x * ppuX, bob.getPosition().y * ppuY, Bob.SIZE * ppuX, Bob.SIZE * ppuY);
//屏幕渲染方法
void render(float delta) {
Gdx.gl.glClearColor(0.1f, 0.1f, 0.1f, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
controller.update(delta);
renderer.render();
}
我有一个updateBob方法来更新世界的bob位置。 这是控制器的更新:
public void update(float delta) {
processInput();
Vector2 pos = new Vector2(7,7);
//bob.setPosition(pos);
bob.getPosition().x += 1;
bob.update(delta);
}
应用程序create()方法
public void create() {
setScreen(new GameScreen());
world = new World();
renderer = new WorldRenderer(world, true);
controller = new WorldController(world);
//Gdx.input.setInputProcessor(this);
}
在方法内部,我更新了它并且值发生了变化。但是鲍勃在渲染中的位置并没有改变,所以我无法让鲍勃移动。 请告诉我哪里出错了。
答案 0 :(得分:1)
在聊天讨论后我们发现了问题。如果您覆盖render()
中的ApplicationListener
,则必须致电super.render()
以确保调用render(float delta)
中的Screen
。 pause()
以及ApplicationListener
的其他方法也应该相同。