LibGdx在等距瓷砖上渲染一个精灵

时间:2017-05-02 16:51:05

标签: libgdx isometric

所以我有这个等距地图,我想在瓷砖上绘制精灵。 但是当然如果我得到等距瓷砖的位置,并且我在该位置上绘制一个精灵,它将不会在瓷砖顶部绘制,因为isomap是旋转的。

如果我为每个瓷砖位置绘制一个颜色立方体....

enter image description here

##

所以我的问题是,我必须做些什么来在瓷砖上绘制这个精灵? 我正在使用IsometricTiledMapRenderer

先谢谢,我一整天都在搜索这个问题,而且我缺乏英语词汇也没有帮助搜索

编辑:@dfour回答几乎完成了这个伎俩..继承人现在的样子......

enter image description here

1 个答案:

答案 0 :(得分:0)

您需要将笛卡尔值转换为等轴测量值。 这个Isometric Tutorial应该会有所帮助。

//Cartesian to isometric:

isoX = cartX - cartY;
isoY = (cartX + cartY) / 2;

//Isometric to Cartesian:

cartX = (2 * isoY + isoX) / 2;
cartY = (2 * isoY - isoX) / 2;

这些功能显示了如何从一个系统转换为另一个系统:

function isoTo2D(pt:Point):Point{
  var tempPt:Point = new Point(0, 0);
  tempPt.x = (2 * pt.y + pt.x) / 2;
  tempPt.y = (2 * pt.y - pt.x) / 2;
  return(tempPt);
}

function twoDToIso(pt:Point):Point{
  var tempPt:Point = new Point(0,0);
  tempPt.x = pt.x - pt.y;
  tempPt.y = (pt.x + pt.y) / 2;
  return(tempPt);
}