gpt4 book ai didi

java - Libgdx x 和 y 区别

转载 作者:行者123 更新时间:2023-11-30 10:50:49 26 4
gpt4 key购买 nike

在下图中,您可以看到我在屏幕上画了一个黑色圆圈,在代码中我试图让黑色圆圈与透明圆圈的坐标相匹配,透明圆圈是我的物理体,它正在完全工作。

我的问题是当我在 map 上移动透明圆圈时,黑色圆圈停留在角落里。黑色圆圈移动了大约几个像素,所以看起来它移动了一点但缩小了很多,我不知道为什么。谢谢。

xydifference

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

最佳答案

您将 Batch 的投影矩阵设置为 UI 的相机以进行 UI 绘制,但在绘制游戏元素之前,您永远不会将其更改为 gameCamera 的投影。在 game.batch.begin(); 行之前,您需要添加 game.batch.setProjectionMatrix(gameCamera.combined);

顺便说一句,Character 扩展 Sprite 没有意义,因为您不使用 Character 来绘制任何东西,仅用于跟踪位置。

关于java - Libgdx x 和 y 区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34931684/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com