2014-01-23 112 views
0

我想让我把它放在屏幕上的精灵,并拖动相机在世界上。但是精灵粘在相机上,当我拖动相机时,它仍然在屏幕的底部。Sprite粘贴到libgdx中的相机?

这不会发生在地图(.tmx文件)和渲染器上:摄像机可以拖动地图,而地图不会粘在摄像机上。 spriteBatch艰难,精灵停留在屏幕的底部。

这里是我的代码:

map = MyLoader.manager.get("data/mMap.tmx"); 
float unitScale = 1/64f; 
renderer = new OrthogonalTiledMapRenderer(map, unitScale); 

@Override 
public void render() { 
    Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); 

    camera.update(); 
    renderer.setView(camera); 
    renderer.render();//tilemap works fine 

    //sprite 
    //batchMap.setProjectionMatrix(camera.combined);//wrong 

    batchMap.begin(); 
    if (scrFactoryMap.maps.size() > 0) { 
     scrFactoryMap.getMap(0).draw(batchMap);//sprite sticks to the camera 
    } 
    str = "string"; 
    font.draw(batchMap, str, 50,50);//font sticks to the camera 
    batchMap.end(); 
} 


private void slerpCamera(){ 
    //... 
    camera.position.add(camX, camY, 0); 
    camera.update(); 
} 

回答

2

为什么你对此有何评论这一点,放错它?

//sprite 
//batchMap.setProjectionMatrix(camera.combined);//wrong 

必须将新ProjectionMatrix设为每当你变换SpriteBatch(即移动)相机。

取消注释:)

+0

我认为这是一个技巧性的问题。评论清楚地表明这是“错误的”。它*不能*成为解决方案! :D – noone

+0

确实,这是一种可能性:我认为他认为这是错误的,因为当使用ProjectionMatrix和他的相机在位置0,0时,它将看起来好像世界是否开始在屏幕中间。所以他认为这是错误的:但实际上他只需要移动相机。不是很好解释.. – Lestat

+0

谢谢你,你说得对,它几乎工作,投影矩阵的问题是,我得到一个黑色的矩形,而不是我的精灵,它是在右上角,而没有它,精灵正如预期的那样,在左下角显示的很好。你会知道如何将它放回到图像的左下角(它可能是图像的背面,不知何故,设置从底部到顶部,从左到右,从前到后翻转) – Paul