[开发者心得] 分享:触发器的原理是什么,怎么用性能更好呢?

[复制链接]
1759 |4
六安鱼片 发表于 2023-5-14 09:47:01 | 显示全部楼层 |阅读模式
本帖最后由 六安鱼片 于 2023-5-14 09:51 编辑


设想在一个游戏中,为了让玩家不会无限坠落,通常会设置一个触发器放在世界的下方,玩家触碰后就会死亡。由此可能会产生一个问题,一个放大100倍的死亡触发器,占用的性能大一点,还是切割成小的占用的性能大一点?

触发器原理
盒状触发器通常是一个立方体或长方体的区域,它可以在游戏中被放置在需要检测物体的位置。当一个物体进入盒状触发器的范围内时,触发器会发出一个信号,告诉游戏引擎该物体已经进入了该区域。

盒状触发器的实现通常基于游戏引擎的物理引擎,它可以检测物体的碰撞和触发事件。物理引擎一般使用碰撞检测算法来检测物体是否与盒状触发器相交。碰撞检测算法的基本思想是对物体的边界进行建模,并检测这些边界是否相交。在盒状触发器的情况下,物理引擎会将触发器的边界建模为一个立方体或长方体,然后检测其他物体是否与该立方体或长方体相交。碰撞检测算法的实现通常基于空间分割技术,例如包围盒、网格和八叉树等。这些技术可以将物体分成更小的区域,从而减少检测的计算量,提高碰撞检测的效率。

大的好还是小的好?
如果使用一个非常大的触发器,因为触发器的大小和形状决定了物理引擎进行碰撞检测的范围,物理引擎需要对所有可能进入触发器区域的物体进行相交测试,这会导致计算量非常大,从而降低游戏的性能。相反,如果使用多个小的触发器,物理引擎只需要对进入每个小触发器的物体进行相交测试,这样可以减少计算量,提高游戏的性能。同时,使用多个小的触发器还可以更精确地控制触发器的范围和位置,避免误差导致的错误检测。

实际情况分析
但如果我们考虑触发器距离大部分物体都比较远的情况,这时使用一个大触发器可能会更节省性能。这是因为在这种情况下,使用一个大触发器可以减少相交测试的次数,从而减少计算量,提高游戏的性能。同时,由于大部分物体都比较远,所以不需要对所有物体都进行相交测试,只需要对进入大触发器的物体进行相交测试即可。

然而,如果大部分物体都比较接近,使用一个大触发器可能会导致计算量非常大,从而降低游戏的性能。在这种情况下,使用多个小触发器可能会更好,因为可以更精确地控制触发器的范围和位置,避免不必要的相交测试。

因此,选择使用大触发器还是小触发器,需要根据具体情况进行权衡和选择。

回复

使用道具 举报

汽汽汽汽水 发表于 2023-5-14 10:01:43 | 显示全部楼层
感觉不能单纯按大小来算,相交测试的运算量与进入的物体数量关系比较大
回复

使用道具 举报

六安鱼片楼主 发表于 2023-5-14 10:08:24 | 显示全部楼层
汽汽汽汽水 发表于 2023-5-14 10:01
感觉不能单纯按大小来算,相交测试的运算量与进入的物体数量关系比较大 ...

是的,还是要根据具体情况来分析。
回复

使用道具 举报

窜稀大仙 发表于 2023-5-14 14:53:42 | 显示全部楼层
是不是有两种检测方式,另一种不是基于物理引擎的,只计算是否重合,精确性不如碰撞检测,但效率高很多。
回复

使用道具 举报

六安鱼片楼主 发表于 2023-5-14 14:57:58 | 显示全部楼层
窜稀大仙 发表于 2023-5-14 14:53
是不是有两种检测方式,另一种不是基于物理引擎的,只计算是否重合,精确性不如碰撞检测,但效率高很多。 ...

通常是基于包围盒做相交测试,将物体用一个最小的包围盒来近似表示,然后判断两个包围盒是否相交。当两个包围盒相交时,可以进一步进行精确的相交测试,以判断两个物体是否真正相交。
回复

使用道具 举报

热门版块
快速回复 返回顶部 返回列表