应该将墙创建为平面还是盒子?


22

墙壁作为平面或盒子有什么好处?我应该使用带盒对撞机而不是网格对撞机的飞机吗?

Answers:


15

您将需要考虑几件不同的事情。

注意:下面描述的优化所带来的好处仅与一堵墙真正相关。在这一点上,考虑使用其他解决方案(例如二进制空间分区(BSP))来制作游戏墙是明智的。这将使您的关卡针对渲染(如果设计正确)和物理(针对碰撞和不碰撞的定义非常好)进行了高度优化。

渲染图

一个盒子比一个平面要花费更多的渲染时间。它具有更多的顶点和三角形,这意味着您的顶点着色器和光栅化器将不得不运行更多数据。因此,仅在需要可视性时才使用方框。根据需要删除脸部,以便玩家看到。

物理

如果可以的话,应始终使用a BoxCollider而不是a MeshColliderMeshColliders必须在网格的每个面(或作为凸包)上应用碰撞,并使光线投射和物理速度变慢(但对于一个盒子来说,这是微不足道的)。另一件事BoxColliders是,当玩家真正快速前进时,要让他们分阶段执行变得更加困难。即使发生连续的碰撞,如果您发现物体仍然穿过墙壁,您始终可以扩大BoxColliders

生产率

如果您使用飞机的速度更快MeshColliders(因为您不需要调整所有BoxColliders尺寸以匹配其尺寸),则只要获得所需的性能就可以使用它们。


10

扩展一点“ Coburn”的观点

渲染:如果将墙仅渲染为平面,则该墙只能从一侧可见,因为该平面(或更确切地说是其面)仅具有一侧。因此,如果玩家能够在墙上移动,那么您将需要多个平面来覆盖所有侧面,这意味着无论如何您最终都会得到一个盒子。

物理:与全网格碰撞器相比,简单的几何碰撞器(球体,盒子等)总是更快地进行计算,因为并非必须单独检查网格的所有面。相反,可以使用“简单”射线广播或距离计算(例如,到球心的距离减去球的大小)。

对于具有单独的“平面对撞机”(Unity没有)的其他物理引擎,没有“更好”的。从性能角度来看,飞机可能会稍微快一点,但是您可能会遇到快速物体通过飞机而实际上没有碰撞的问题。然后你留下了既可以采用具有较厚的对撞机(所以框,而不是平面)或移动到连续型Collission检测(CCD),如解释在这里


您几乎总是可以关闭背面剔除。
巴林特

2
@巴林特真的。然后用户可能会从另一侧看到墙壁,尽管在这种情况下照明不正确(光源是从另一侧/房间发出的光,而不是他/她所站在的那一面)。
菲利普·奥尔加耶

在第二点中,您实际上并没有指定是赞成还是反对以及具体含义。平面在几何学上似乎比盒子更简单,那是您要说的吗?
巴库里

@Bakuriu据我所知,Unity没有“飞机对撞机”,因此“盒子”是最近的东西。我为其他物理引擎添加了注释。
菲利普·奥尔加耶


0

经常有人告诉我,如果您要留下阴影,最好使其牢固以帮助轻度出血,因为深度差异很小,并且会出血。

我可能是错的,但是我将所有墙壁和类似东西的两面都弄了,一面墙壁只会是几个顶点,所以把它当成飞机应该不算多。

我有一些东西留在侧面,但大部分是东西的底部或顶部,周围有很多东西可以帮助轻微出血。

我对物理学也这样做,并不是每个人都认真考虑过,但对我来说,将墙用作墙,将平面用作平面似乎正确,但这就是我

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.