2013-11-03 25 views
1

我正在使用libgdx,如果我不尝试设置相机的位置,我的游戏渲染效果会非常好。但是,如果我只是添加这一行代码:camera.position.set(0f,0f,0f),它会导致白线显示在我所有的精灵上。libgdx camera.position.set导致撕裂

之前: enter image description here

添加一个代码行后:camera.postion.set(0F,0F,0F) enter image description here

这些图像是随机地图所以布局是不同的。唯一改变的是白线。相机确实去了位置(0,0,0)。 这可能是什么原因造成的?它基本上是将1个白色像素添加到我的精灵顶部。我有一个512x512的瓷砖板,其中有64x64瓷砖。下面是相关代码

内置的屏幕类:

@Override 
public void show() 
{ 
    float w = Gdx.graphics.getWidth(); 
    float h = Gdx.graphics.getHeight(); 

    this.camera = new OrthographicCamera(w, h); 

    this.camera.setToOrtho(true, w, h); 
    this.stage.setCamera(this.camera); 
    camera.update(); 

    this.input = new InputHandler(this.camera); 
    Gdx.input.setInputProcessor(this.input); 

    dungeon = new Dungeon(DungeonGenerator.generateDungeonMap()); 

    renderer = new OrthogonalTiledMapRenderer(dungeon); 

    this.player = new Player(dungeon); 
    this.stage.addActor(this.player); 

    camera.position.set(0f, 0f, 0f); 

} 

@Override 
public void render(float delta) 
{ 

     Gdx.gl.glClearColor(0f, 0f, 0f, 1f); 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

    camera.update(); 

    renderer.setView(camera); 
    renderer.render(); 

    batch.begin(); 
    font.draw(batch, "FPS: " + Gdx.graphics.getFramesPerSecond(), 10, 20); 
    font.draw(batch, "camera: " + camera.position, 10, 50); 
    font.draw(batch, "Stage:" + this.stage.getCamera().position, 10, 80); 
    batch.end(); 

    //update and render stage actors 
    stage.act(delta); 
    stage.draw(); 



} 
+0

这可能适用http://stackoverflow.com/questions/15883120/orthogonaltiledmaprenderer-and-normal-spritebatch-renders-a-white-box – arynaq

+0

谢谢。我刚读过它。我正在尝试解决方案,但我不认为这是同一问题 – theDazzler

+0

我尝试了不同的事情,使用batch.begin()和batch.end()就像链接中的解决方案,但它没有工作 – theDazzler

回答

1

我想通了。这个问题是由我的spritesheet有白色背景引起的。在对我的Spritesheet进行了一些更改之后,我必须导出该表单而不隐藏我的白色背景。我只是将alpha背景添加回spritesheet,并且再次正常工作。