我正在使用SMFL / C ++制作2D等距游戏引擎,我在进行等长计算时得到了这个:
这是我在2D引擎中计算等距坐标的公式: 对于I-J坐标我有:
x = (I - J) * (tileWidth / 2);
y = (J + I) * (tileHeight / 2);
//Totally working with classics tiles
编辑:我的问题是由于我的瓷砖形状这是一个立方体,但我不知道如何解决它。我真的需要做一些复杂的数学来处理3D对象(我宁愿避免这种情况)或者我可以稍微改变一下公式吗?
编辑2:解决方案:int isoY = (x + y) * (height / 4);
答案 0 :(得分:1)
首先,如果它是2D引擎,我想知道为什么有3个维度,为什么以及如何在引擎中使用z。
假设您希望在等轴投影((x,y)中以像素为单位)制作平铺图,并给出正投影中平铺数量的坐标(I,J)。 在这种情况下,我的x和y的公式很好给定tileWidth并且tileHeight是正确的(即等轴投影中的值)。你不应该使用任何z。
另一方面,如果您的问题是得到给定(x,y,z)笛卡尔坐标的3D对象的(x,y)像素坐标,我建议您阅读:Computing the Pixel Coordinates of a 3D Point
如果我认为错了,我会编辑或删除。