等距坐标,菱形,瓷砖之间不需要 space
Isometric coordinates, diamond shape, unwanted space between tiles
我正在使用 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);
首先,如果它是一个 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
万一我猜错了我会编辑或删除。
我正在使用 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);
首先,如果它是一个 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
万一我猜错了我会编辑或删除。