java - libgdx 中 Sprite 会粘在相机上?

标签 java opengl libgdx render spritebatch

我想让 Sprite 保持在屏幕上我留下的位置,并在世界中拖动相机。但是 Sprite 会粘在相机上,并且当我拖动相机时仍然位于屏幕底部。

对于图 block map (.tmx 文件)和渲染器来说,不会发生这种情况:相机可以在图 block map 上拖动,并且图 block map 不会粘在相机上。使用 spriteBatch 硬核, Sprite 会停留在屏幕底部。

这是我的代码:

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();
}

最佳答案

你为什么评论这个,并错误

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

每当您变换(即移动)相机时,都必须将新的 ProjectionMatrix 设置为 SpriteBatch。

取消注释:)

关于java - libgdx 中 Sprite 会粘在相机上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21299143/

相关文章:

java - 记忆一个 Activity

java - JAX-RS - 在 RESTful Web 服务中进行身份验证并获取用户数据

c++ - 如何找到 glx 库名称?

java - 无法将 libGDX 项目导入 Eclipse。

java - 转发新 session 时出错找不到: Capabilities [{iPhone=Safari, browserName=Safari, deviceVersion=10.3.1, platformName=iOS}]

java - 初学者,循环

c++ - OpenGL光照和发光

opengl - 顶点着色器与片段着色器

android - libgdx - 着色器忽略第一帧中的混合/alpha

android - LibGDX - 着色器在桌面上工作但不在 Android 上