在下面的图片中你可以看到我在屏幕上画了一个黑色圆圈,在代码中我试图让黑色圆圈与清晰圆圈的坐标相匹配,这是我物理身体的完全正常工作。
我的问题是当我在地图上移动清晰的圆圈时,黑色圆圈停留在角落里。黑色的圆圈移动了几个像素,所以看起来它有点像一些但是非常缩小,我不知道为什么。感谢。
public void update(float dt){
handleInput(dt);
world.step(1 / 60f, 6, 2);
player.update(dt);
camX();
gameCam.update();
renderer.setView(gameCam);
}
@Override
public void render(float delta) {
update(delta);
Gdx.gl.glClearColor(0, 0, 0, 1);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
game.batch.setProjectionMatrix(hud.stage.getCamera().combined);
hud.stage.draw();
renderer.render();
b2dr.render(world, gameCam.combined);
game.batch.begin();
game.batch.draw(ball,player.getX() , player.getY(), 70, 70);
game.batch.end();
}
public void camX(){
gameCam.position.x = gamePort.getWorldWidth() / 2;
if(player.b2Body.getPosition().x >= gamePort.getWorldWidth() / 2){
gameCam.position.x = player.b2Body.getPosition().x;
}
}
public class Character extends Sprite {
public World world;
public Body b2Body;
public float x;
public float y;
public Character(World world){
this.world = world;
defineMario();
}
public void update(float dt) {
setPosition(b2Body.getPosition().x,b2Body.getPosition().y );
}
答案 0 :(得分:1)
您可以将批处理的投影矩阵设置为用户界面绘制的UI相机,但在绘制游戏元素之前,您永远不会将其更改为gameCamera
的投影。在game.batch.begin();
行之前,您需要添加game.batch.setProjectionMatrix(gameCamera.combined);
。
顺便说一句,角色延伸精灵没有意义,因为你不会使用角色来绘制任何东西,只能用于追踪位置。
答案 1 :(得分:0)
请试试这个:
public class Character extends Sprite {
public World world;
public Body b2Body;
public float x;
public float y;
public Character(World world){
this.world = world;
defineMario();
}
public void update(float dt) {
//so the sprite and body will have the same center
setPosition(b2Body.getPosition().x-getWidth()/2, b2Body.getPosition().y- getHeight()/2 );
setCenterOrigin(); // to handle when body does a rotation
}
请在评论中告诉我它是否有效
祝你好运