等距坐标,菱形,瓷砖之间不需要的空间

时间:2015-11-13 06:48:24

标签: c++ 2d game-engine sfml isometric

我正在使用SMFL / C ++制作2D等距游戏引擎,我在进行等长计算时得到了这个:

enter image description here

这是我在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);

1 个答案:

答案 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

如果我认为错了,我会编辑或删除。