LibGdx在等轴测平铺的顶部渲染精灵

LibGdx在等轴测平铺的顶部渲染精灵,libgdx,isometric,Libgdx,Isometric,我有一张等距图,我想在瓷砖上画精灵。 当然,如果我得到了等距图块的位置,我在这个位置画了一个精灵,它不会在图块的顶部画,因为等值线图是旋转的 这里,如果我为每个瓷砖位置绘制一个颜色立方体 ## 所以我的问题是,我要做什么才能在瓷砖上画出这个精灵? Im使用等轴测地图渲染器 提前感谢,我已经搜索了一整天,我的英语词汇的缺乏无助于搜索 编辑:@d我们的回答几乎成功了。。下面是它现在的样子 您需要的是将笛卡尔坐标值转换为等轴测值。 这应该会有所帮助 //Cartesian to isometri

我有一张等距图,我想在瓷砖上画精灵。 当然,如果我得到了等距图块的位置,我在这个位置画了一个精灵,它不会在图块的顶部画,因为等值线图是旋转的

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


##

所以我的问题是,我要做什么才能在瓷砖上画出这个精灵? Im使用
等轴测地图渲染器

提前感谢,我已经搜索了一整天,我的英语词汇的缺乏无助于搜索


编辑:@d我们的回答几乎成功了。。下面是它现在的样子


您需要的是将笛卡尔坐标值转换为等轴测值。 这应该会有所帮助

//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);
}

您需要的是将笛卡尔值转换为等轴测值。 这应该会有所帮助

//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);
}

它确实变得更好了,但仍然是关闭的,请参阅我编辑的问题,谢谢您的回复!你能提供一些或你的渲染代码,这样我可以调整我的示例以匹配你的程序吗?它确实变得更好了,但仍然是关闭的,请参阅我编辑的问题,谢谢你的回答!您能提供一些或您的渲染代码,以便我可以调整我的示例以匹配您的程序吗?