现在正在努力工作几个小时......
我使用Libgdx相机类渲染2D自上而下的世界。摄像机在x和y轴上移动,并使用缩放参数放大和缩小。
无论相机的位置和变焦是什么,我都希望能够准确地点击世界。因此,即使WorldPoint(50,70)转换为ScreenPoint(50,90),当我将相机翻译为(0,20)并保持缩放为1时,我仍然希望能够点击ScreenPoint(50,90)和回到WorldPoint(50,70)。你知道我的意思吗?
到目前为止,这是我的功能......
Vector2 adjustedMouseInput(float screenX, float screenY)
{
screenX += (cam.position.x * cam.zoom) - (screenWidth/2);
screenY += (cam.position.y * cam.zoom) - (screenHeight/2);
screenX *= cam.zoom;
screenY *= cam.zoom;
return new Vector2(screenX, screenY);
}
我最大程度上是通过试错而且它没有工作,但我觉得有些是半对的,你知道吗?我已经尝试了缩放*位置和screenWidths / Sqrt(pi)的每个排列,所以我厌倦了它并且需要有人之前完成这个操作才能告诉我正确的公式是什么。
缩放参数在变高时缩小,相机位置默认为屏幕中心,因此-screenwidth / 2 ......我认为这一切都需要知道