地图坐标系的最佳做法


20

游戏地图中的坐标系周围是否有约定和/或最知名的方法?原点通常位于地图中心吗?还是它生活在角落里,而地图是建立在3D空间的一个八分之一内?


嗯,您标记了tilemap,最重要的答案是关于tilemap的关注,但您还提到了3D和八分圆,这可能就是第二个答案谈论浮点精度的原因。3D几何图形通常不存储在网格中,因此原点更加随意,而且我从未听说过2D网格图中的浮点精度问题。也许需要进行一些澄清或统一…
StarWeaver

Octant已被编辑。我提到3D是因为我看到的大多数框架都具有某种Z轴。游戏地图可以是平坦的2D模式,但相机沿第三轴偏移。
TaylorE

Answers:


37

大多数游戏将地图原点放在一个角上。造成这种情况的主要原因是,瓦片图通常在内部存储在二维数组中,并且大多数编程语言都不允许使用负数组索引。关于哪个角应该是起点有很多讨论,但是我认为没有任何论点特别强。最后,这只是个人喜好。我建议仅使用图形API所使用的同一角,以最大程度地减少头痛。

例外情况通常是游戏,它允许地图在各个方向上无限增长。如果没有负索引,这将无法正常工作,因此不可能使用简单的2d数组。您将需要将地图数据存储在更复杂的数据结构中。在这种情况下,将原点放置在起始位置通常是最有意义的。


12

从理论上讲,原点的位置无关紧要。无论原点实际在哪里,在渲染地图或对象在地图上移动时所做的所有数学运算都可以正常工作。

但是在实践中,有一个原因可能会使您将地图的中心设为原点-这是有限的浮点值精度。

浮点数离0越远,数字越小,精度越低。

在开发具有很大地图的开放世界游戏时,我们实际上遇到了一些问题,当您离原点越来越远时,物理和其他事物将开始崩溃。

解决方法是通过智能传送周围的东西(玩家,地图图块,相机等),使原点总是离玩家很近,以达到离原点不太远的目的。


1

没关系。某些人在其坐标系中发生的变化通常是y轴。他们宁愿在左下角放置(0,0),也可以简化物理学,而不是在左下角放置(0,0)。


如果坐标系的原点在左下角,物理学如何容易?
Tyyppi_77

3
我猜最后一句话遗漏了一个词:debug。如果地面为零且一切都从那里上升,则比“天花板”为零且一切都以此为衡量标准更为直观。
Vaillancourt
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.