Я просто запускаю libgdx, и это выглядит просто, но я не понимаю. Мой метод отрисовки в объект экрана будет вызывать метод визуализации от WorldRenderer:render in 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 для обновления мире позиции боб. здесь обновление контроллера «s: создать
public void update(float delta) {
processInput();
Vector2 pos = new Vector2(7,7);
//bob.setPosition(pos);
bob.getPosition().x += 1;
bob.update(delta);
}
Применение() метод
public void create() {
setScreen(new GameScreen());
world = new World();
renderer = new WorldRenderer(world, true);
controller = new WorldController(world);
//Gdx.input.setInputProcessor(this);
}
Внутри метода, я обновил его и изменение значения. но позиция bob в рендере не изменяется, поэтому я не могу заставить Боб двигаться. Пожалуйста, скажите мне, где это неправильно.
Вы смотрите учебник 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-resolution -using-libgdx /, и если вы не понимаете это просто Google для этого или попросите здесь. Вернемся к вашему вопросу: когда вы называете метод 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.position.x не меняется, если вы используете bob.getPosition(). X + = 1? '//controller.update (delta);' вы установили обновление в комментарии? Было бы лучше, если бы вы разместили 'controller.update (delta)' и 'public void render (float delta)' как код в своем вопросе. Просто отредактируйте его. – Springrbua