世界界限-(0,大小)或(-HalfSize,HalfSize)?


9

创建在其中移动,绘制和碰撞对象的游戏空间时,最好将(0,0)点或(0,0,0)点放在空间的正中心,这样世界的界限是(-halfSize,halfSize),还是最好将它放在空间的最远角落,所以界限是(0,size)?

每种方案的利弊分别是什么?还是真的没关系吗?

看来这只是次要的细节,但我想看看是否存在我可能忽略的重大问题。

Answers:


15

在我看来,让您的空间中心为(0,0,0)更好。假设您使用带符号格式表示空间中的位置,则中心(0,0,0)允许您同时使用格式的负数和正数部分,这可以为浮点数的精度和带符号整数的范围带来奇迹。这对于小规模而言可能无关紧要,但是对于大规模而言,这可能会有所不同,也就是说,在您必须完全提出新系统之前。

需要澄清的是:假设您正在创建一个游戏世界(假设您正在渲染),则将转换为的最终格式将是float,即您所知道的签名格式。在这种情况下,您可能会遇到无法表示(0,Size),而可以表示(-HalfSize,HalfSize)的情况。如果您不打算渲染并且可以选择任意格式,则可以使用这两种样式,尽管我个人仍然更喜欢上述样式。


+1,很多物理模拟也使用此范围,可能是由于这个原因。
MichaelHouse


1
同样是众所周知的,但对于初学者来说可能有点困难:docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html- “每个计算机科学家应该了解的浮点运算法则
leander

5

这并不重要。只要您在整个游戏过程中保持一致。

我相信更普遍的方法是将世界的边界置于中心(0,0),这意味着你的边界会从那里移开-halfSize, halfSize。由于大多数表示位置的数据结构(Vector2或Vector3)默认为零,因此您知道对象的默认放置在世界的中心(而不是在底角)。

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.