gpt4 book ai didi

java - Libgdx 跟随鼠标 |投影?

转载 作者:搜寻专家 更新时间:2023-11-01 08:47:53 25 4
gpt4 key购买 nike

我试图让对象播放器不断跟随我的鼠标,但我在相机投影方面遇到了一些问题。

 * Displays the Game<br>
*/
private void showGame() {


batch.setProjectionMatrix(camera.projection);
batch.setTransformMatrix(camera.view);

batch.begin();
bitfontBig.setColor(CurrentColor);
// draw the highscore
if (score < 10) {

bitfontBig
.draw(batch,
"0" + String.valueOf(score),
380 - (bitfontBig.getBounds("0"
+ String.valueOf(score)).width / 2),
(1200 / 2)
+ (bitfontBig.getBounds("0"
+ String.valueOf(score)).height / 2));
} else {
bitfontBig
.draw(batch,
String.valueOf(score),
380 - (bitfontBig.getBounds(String.valueOf(score)).width / 2),
(1200 / 2)
+ (bitfontBig.getBounds(String
.valueOf(score)).height / 2));

}

// Draw the Spikes
for (Spike spike : spikes) {
if (bird.flyToTheLeftSide) {
batch.draw(Texture_Spike_Left, (-30) + spike.size, spike.y);
} else {
batch.draw(Texture_Spike_Right, 672 - spike.size, spike.y);
}
}
// Draw the Bird
if (bird.flyToTheLeftSide) {
CurrentFrame = BirdAnimation.getKeyFrame(statetime, true);

} else {
CurrentFrame = BirdAnimationRight.getKeyFrame(statetime, true);

}
batch.draw(CurrentFrame, bird.position.x, bird.position.y);

batch.end();

////PLAYER
batch.begin();
PlayerSprite.draw(batch);
PlayerSprite.setPosition(Gdx.input.getX(), Gdx.input.getY());
batch.end();




shaperenderer.setProjectionMatrix(camera.projection);
shaperenderer.setTransformMatrix(camera.view);
shaperenderer.begin(ShapeType.Filled);

问题是当我向下移动鼠标时 Player 对象会上升,反之亦然。同时我认为它有一些延迟响应。

感谢任何帮助,

谢谢

最佳答案

libGDX 在内部反转 Y 轴,因此它指向上方,而不是下方。此外,原点从屏幕的左上角移动到屏幕的左下角。由此产生的坐标系是数学家(和大多数其他人)所习惯的。要撤消反转,只需从屏幕高度中减去 y 值,如下所示:

PlayerSprite.setPosition(Gdx.input.getX(), Gdx.graphics.getHeight() - Gdx.input.getY());

如果玩家仍然表现怪异,请尝试只取反 y 值。

PlayerSprite.setPosition(Gdx.input.getX(), -Gdx.input.getY());

此外,我会考虑尝试 Velijko 的建议:

shaperenderer.setProjectionMatrix(camera.combined);

响应延迟可能是由于您在更新 Player 之前绘制了它。因此,用户总是看到他“过去”的位置,而不是他“现在”的位置。只需先更新 Player,然后绘制它:

PlayerSprite.setPosition(Gdx.input.getX(), Gdx.graphics.getHeight() - Gdx.input.getY());
PlayerSprite.draw(batch);

我希望我能帮上忙=)。

关于java - Libgdx 跟随鼠标 |投影?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26524401/

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