Exi*_*kle 2 java camera sprite libgdx
我正在使用libgdx,我有一个平铺地图,我想将精灵绘制到.然而精灵被绘制到实际窗口上,所以当我移动相机时,精灵停留在同一个地方.?我希望精灵在地图上移动.
这就是我目前渲染我的对象的方式
@Override
public void render(float delta) {
translateCamera();
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
camera.update();
renderer.setView(camera);
renderer.render(bgLayers);
batch.begin();
batch.draw(splayerSprite, Gdx.graphics.getWidth() / 2,
Gdx.graphics.getHeight() / 2);
batch.end();
renderer.render(fgLayers);
}
Run Code Online (Sandbox Code Playgroud)
它总是最终位于屏幕的中间,但是我希望能够将它们分开移动,例如带有(W,A,S,D)的摄像机,并使用方向键移动我的播放器.然后,如果我想让相机锁定到播放器,但其他方面是免费的.
我是libgdx的新手所以请耐心等待,谢谢
问题是SpriteBatch投影矩阵没有设置为Camera投影矩阵.这意味着Sprite没有相对于Camera.这就是相机移动的原因,但精灵不是; 没有使用正确的矩阵.
此外,精灵的渲染时间始终为屏幕宽度的一半,也是屏幕高度的一半.修复此调用sprite.draw.这将使用Sprite的内部位置.
SpriteBatch通过batch.setProjectionMatrix(camera.combined)设置投影矩阵.这将导致精灵相对于相机渲染.
@Override
public void render(float delta) {
translateCamera();
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
camera.update();
renderer.setView(camera);
renderer.render(bgLayers);
//here's the line that was missing.
batch.setProjectionMatrix(camera.combined);
batch.begin();
//be sure to call this instead of specifying position yourself!
splayerSprite.draw(batch);
batch.end();
renderer.render(fgLayers);
}
Run Code Online (Sandbox Code Playgroud)
每当按下WASD时,你仍然需要处理将相机的位置捕捉到精灵的位置,但这是微不足道的.
//snap the camera to the sprite's center.
if(wasd_isDown){
float centerX = sprite.getX()+sprite.getWidth()/2;
float centerY = sprite.getY()+sprite.getHeight()/2;
camera.position.set(x,y, 0);
}
Run Code Online (Sandbox Code Playgroud)
如果按下方向键,只需通过Vector3.add翻译相机的位置矢量,如下所示:
if(!wasd_isDown){
float deltaX = 0;
float deltaY = 0;
float MOVE_DIST = 10;//or whatever you need.
if(leftPressed) deltaX = -MOVE_DIST;
else if(rightPressed) deltaX = MOVE_DIST;
if(upPressed)deltaY = MOVE_DIST;
else if(downPressed)deltaY = -MOVE_DIST;
camera.position.add(deltaX, deltaY, 0);
}
Run Code Online (Sandbox Code Playgroud)
这将允许摄像机仅在玩家使用方向键时独立移动,并允许精灵相对于摄像机的方向进行渲染.当按下WASD时,它还会立即将相机拍摄回精灵.
| 归档时间: |
|
| 查看次数: |
2169 次 |
| 最近记录: |