gpt4 book ai didi

java - 在鼠标位置绘制矩形和形状渲染矩形

转载 作者:行者123 更新时间:2023-12-02 06:28:41 25 4
gpt4 key购买 nike

我试图绘制一个跟随鼠标并位于其下方的边界框,但矩形不随之移动,它移动得太快或太慢并且不在正确的位置。

我尝试获取鼠标坐标并将其传递到一个矩形中,然后在其位置绘制一个矩形,以便我可以看到它在哪里。

mouseRect是在鼠标位置绘制的矩形:

mouseRect.set((float)Gdx.input.getX(), (float)Gdx.input.getY(), 32, 32);

这是我的渲染方法,旨在在 mouseRect 的位置绘制一个矩形:

shapeRenderer.setProjectionMatrix(cam.combined);
shapeRenderer.begin(ShapeType.Filled);
shapeRenderer.setColor(Color.BLUE);
shapeRenderer.rect(mouseRect.x, mouseRect.y, mouseRect.width, mouseRect.height);
shapeRenderer.end();

当鼠标移动时,盒子确实移动,但速度太快,并且没有像预期那样位于鼠标下方(有一个巨大的偏移,似乎是颠倒的,但当我将其设置为负值时,它仍然不起作用) .

最佳答案

我认为你应该阅读 coordinate systems 。鼠标系统是 y 向下且取决于屏幕,而(如果我没记错的话)相机是 y 向上、居中并使用视口(viewport)大小。

我建议使用带有 mouseMovedtouchDragged 事件监听器的 Stage,这些事件具有舞台坐标。添加一个 Actor 在舞台上画一个矩形。然后您可以相应地移动 Actor 。您不必处理坐标系更改。

它可能看起来像这样:

Actor rectangleActor = new RectangleActor();
stage.addActor(rectangleActor);
stage.addListener(new InputListener() {
public boolean mouseMoved(InputEvent event, float x, float y) {
rectangleActor.setPosition(event.getStageX(), event.getStageY());
return false;
}
})

参见this answer了解如何在 actor 中绘制矩形。

关于java - 在鼠标位置绘制矩形和形状渲染矩形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55771299/

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