如何使用Libgdx在等轴测场景中移动摄影机

如何使用Libgdx在等轴测场景中移动摄影机,libgdx,isometric,Libgdx,Isometric,我正在使用LibGdx创建一个具有等距透视图的游戏。 我的代码基于以下示例: 我需要在屏幕中央放置一块瓷砖。我试过使用camera.lookAt()但不起作用 公共布尔点击(浮点屏幕X、浮点屏幕Y、整数计数、整数按钮){ 触摸设置(screenX,screenY,0); 凸轮未投影(触摸); 触觉。mul(隐形转换); pickedTileX=(int)touch.x; pickedTileY=(int)touch.y; 凸轮注视(pickedTileX,pickedTileY,0); 有什么

我正在使用LibGdx创建一个具有等距透视图的游戏。 我的代码基于以下示例:

我需要在屏幕中央放置一块瓷砖。我试过使用camera.lookAt()但不起作用

公共布尔点击(浮点屏幕X、浮点屏幕Y、整数计数、整数按钮){
触摸设置(screenX,screenY,0);
凸轮未投影(触摸);
触觉。mul(隐形转换);
pickedTileX=(int)touch.x;
pickedTileY=(int)touch.y;
凸轮注视(pickedTileX,pickedTileY,0);
有什么想法吗?
谢谢!

您的代码不起作用的原因是
pickedTileX
pickedTileY
都是世界坐标,在正交网格中,每个瓷砖的宽度和高度为1个单位

要使摄影机朝向正在查看的互动程序居中,实际上不需要找出单击了哪个互动程序。您只需要点的世界坐标和屏幕大小。以下代码可以完成此操作:

公共布尔点击(浮点屏幕X、浮点屏幕Y、整数计数、整数按钮){
触摸设置(screenX,screenY,0);
凸轮未投影(触摸);
//将摄像头集中在触摸点周围
凸轮位置设置(touch.x-cam.viewportWidth/2,
touch.y-cam.viewportHeight/2,
凸轮位置(z);

您之前使用的
lookAt
方法只是改变了相机的方向,而没有进行平移。

我终于找到了解决问题的方法,将Basim Khajwal的响应与渲染贴图算法中使用的相同公式相结合

float x_pos=(pickedTileX*tileWidth/2.0f)+(pickedTileY*tileWidth/2.0f);
浮动y_位置=-(pickedTileX*tileHeight/2.0f)+(pickedTileY*tileHeight/2.0f);
触摸设置(x位置、y位置、凸轮位置z);
凸轮位置设置(触摸x、触摸y、凸轮位置z);
现在我可以将任何瓷砖居中,即使旋转和缩放我的场景也能很好地工作。 (我不知道为什么巴西姆的方法效果不好,这是有道理的)


非常感谢Basim。

我认为您不想从帖子中减去一半屏幕大小。好的,根据您的提示,它看起来更好,但不准确。为什么我们不需要涉及等距变换矩阵?我对此有点不知所措