2013-11-16 3 views
1

У меня есть несколько лет опыта работы в Java и Slick2D, и я пытаюсь перенести игру в libgdx из-за того, что это намного лучшая библиотека. Однако у меня возникла простая проблема с перемещением спрайта на экране. Должна быть какая-то парадигма, которую я не понимаю с помощью этого API. Я переделал свой код следующим образом. Он распознает ввод и запускает его через все мои сущности и сетевые системы как на сервере, так и с сервера, но спрайт остается в том же месте. Любая помощь будет замечательной.Перемещение спрайта в LibGDX

Мои создать() метод:

public void create() { 
    //Check to see if we are using external server or localhost 
    ClientNetworkManager.setLocalhostAsHost(Constant.useLocalhost, this); 

    //Begin application setup 
    float w = Gdx.graphics.getWidth(); 
    float h = Gdx.graphics.getHeight(); 

    camera = new OrthographicCamera(1280,900); 
    batch = new SpriteBatch(); 


    //Load assets into memory 
    texture = new Texture(Gdx.files.internal("Sprites/Ash.png")); 
    //texture.setFilter(TextureFilter.Linear, TextureFilter.Linear); 

    sprite = new Sprite(texture); 
    sprite.setSize(256,256); 
    sprite.setPosition(44, 666); 


    //Begin external network setup 
    setPlayerPointer(null); 
    this.connection = new ClientConnectionThread(this); 
    getClientConnectionThread().setCurrentPing(0); 
} 


My render() method: 

     public void render() { 
       //Render logic 
       Gdx.gl.glClearColor(1, 1, 1, 1); 
       Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); 

       if (connection.isActive() && !Constant.performEssentialTasksOnly) { 
        InputManager.handlePlayerInput(this); 
        batch.setProjectionMatrix(camera.combined); 
        camera.update(); 
        batch.begin(); 

        batch.draw(sprite,playerPointer.getCurrentX(),playerPointer.getCurrentY()); 
        System.out.println(playerPointer.getCurrentX()); 
        batch.end(); 
       } 
    } 

Значения методов getCurrentX/Y все представления правильно, так что это не проблема. Я чувствую, что это должно быть что-то очевидное.

+0

Используйте 'sprite.setPosition()', а затем используйте 'sprite.draw (пакет)'. Также сначала сделайте 'camera.update()', а затем 'batch.setProjectionMatrix()' – noone

ответ

0

Вы не используете позицию Sprite для визуализации, вы на самом деле используете его, как если бы он был обычным TextureRegion.

batch.draw(sprite,playerPointer.getCurrentX(),playerPointer.getCurrentY()); 
System.out.println(playerPointer.getCurrentX()); 

Где вы измените этот плеер?

Делайте это примерно так:

sprite.setPosition(playerPointer.getCurrentX(),playerPointer.getCurrentY()) 
sprite.draw(batch); 

Но опять же, проблема в том, что playerPointer оленья кожа имеют правильные значения (они не меняются).

0

Вы можете позвонить

sprite.setX(xpos); 

изменить фактическое положение.

Если вы собираетесь использовать tiledmap, не забудьте нажать вправо SpriteBatch, который должен быть возвращен методом renderer.getSpriteBatch().

Смежные вопросы