2014-07-02 35 views
2

我是新来这个论坛,并注册只是为了问这个具体问题:我一直在关注视频游戏开发的YouTube网络系列(如何制作2D游戏 - 通过EddieVanHalen98),但他没有告诉我如何让相机跟随一个特定的精灵。我如何让相机跟随播放器在LibGDX

我的渲​​染代码是也遵循

public class [ClassName] { 
    polkymain game; 
    OrthographicCamera camera; 

    public static int PolkyX; 
    public static int PolkyY; 

    SpriteBatch batch; 

    public GameScreen(polkymain game){ 
     this.game = game; 

     camera = new OrthographicCamera(); 
     camera.setToOrtho(true, 1280, 1240); 

     batch = new SpriteBatch(); 

     PolkyX = 0; 
     PolkyY = 0;  
    } 

    @Override 
    public void render(float delta) { 
     Gdx.gl.glClearColor(0.95F, 0.95F, 0.95F, 0.95F); 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);  

     camera.update(); 
     generalUpdate(); 

     batch.setProjectionMatrix(camera.combined);  
     batch.begin();   
     batch.draw(Assets.Sprite_Mario_main, PolkyX, PolkyY);  
     batch.end(); 
    } 

    public void generalUpdate(){ 
     if(Gdx.input.isKeyPressed(Keys.D) || (Gdx.input.isKeyPressed(Keys.LEFT)) 
     { 
      PolkyX += 5; 
     } 

     if(Gdx.input.isKeyPressed(keys.A) || (Gdx.input.isKeyPressd(Keys.RIGHT)) 
     { 
      PolkyX -= 5; 
     } 

     if(Gdx.input.isKeyPressed(keys.S) || (Gdx.input.isKeyPressd(Keys.DOWN)) 
     { 
      PolkyY -= 5; 
     } 

     if(Gdx.input.isKeyPressed(keys.W) || (Gdx.input.isKeyPressd(Keys.UP)) 
     { 
      PolkyY += 5; 
     }  
    } 

    @Override 
    public void resize(int width, int height) { 
     // TODO Auto-generated method stub  
    } 

    @Override 
    public void show() { 
     // TODO Auto-generated method stub  
    } 

    @Override 
    public void hide() { 
     // TODO Auto-generated method stub  
    } 

    @Override 
    public void pause() { 
     // TODO Auto-generated method stub  
    } 

    @Override 
    public void resume() { 
     // TODO Auto-generated method stub  
    } 

    @Override 
    public void dispose() { 
     // TODO Auto-generated method stub  
    } 
} 

,我有我的所有纹理和精灵编码的“资产”类,不知道这是否是相关的,我不这么认为现在我想到它... 告诉我你是否也需要编码。谢谢!

+0

我已经格式化了您的代码。您错过了类声明,因此请替换顶部的[ClassName]和其他您可能错过的信息。 – krillgar

回答

7

让相机按照最简单的方式就是它的位置设置为你的精灵中心每渲染调用,就像这样:

//move your sprite 
camera.position.set(sprite.getX(), sprite.getY(), 0); 
camera.update(); 
//draw everything 

这将使相机完全匹配的位置精灵每次迭代。如果你想要更平滑/更复杂的追随,你应该看看某种形式的插值(更多信息可以在here找到)。