我剛啓動libgdx,這看起來很簡單,但我不明白。 我的渲染畫面對象方法調用render方法從WorldRenderer:在libgdx中渲染無法更新繪製的新值
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方法來更新世界鮑勃位置。 這裏是控制器的更新:
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);
}
裏面的方法,我更新了它和值變化。但鮑勃在渲染中的位置不會改變,所以我不能讓鮑勃移動。 請告訴我哪裏錯了。
你正在看StarAssault教程xD這也是我的第一個教程xD首先,我建議你使用相機,以避免'ppuX,ppuY'。閱讀此http://code.google.com/p/libgdx/wiki/OrthographicCamera和此http://www.acamara.es/blog/2012/02/keep-screen-aspect-ratio-with-different-resolutions -using-libgdx /如果你不明白它只是谷歌或在這裏問。回到你的問題:你什麼時候調用updateBob方法?在一個框架中'bob.getPosition()。x'的值是多少?另一方面呢?你是否在每個渲染週期中清除屏幕? – Springrbua
好的,謝謝你的教程。當在屏幕中觸摸時,我更新了bob,並且bob.getPosition()。x的值也是相同的,即使我設置了bob.getPosition()。x + = 1。渲染方法\t public void render(float delta){ \t \t Gdx.gl.glClearColor(0.1f,0.1f,0.1f,1); \t \t Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); \t \t //controller.update(delta); \t \t renderer.render(); \t \t \t} –
因此,如果您使用bob.getPosition()。x + = 1,bob.position.x不會改變。 ''//controller.update(delta);'你是否在評論中設置了更新?如果你把'controller.update(delta)'和'public void render(float delta)'作爲你的問題的代碼發佈,會更好。只需編輯它。 – Springrbua