PhysX SDK一直都为游戏开发提供高效可靠的场景查询(Scene Query)功能,到了3.2中,也是如此。这一个系列中,就给大家介绍PhysX 3.2中场景查询功能的使用。
这一篇中,我们重点介绍这一功能的一些基本概念和基础用法。
首先,PhysX 3.2中,场景查询的种类支持三种,分别是Raycast,Sweep和Overlap检测。其中:
Raycast检测是从一点,投射一根一定长度的线段,检测物理世界中跟这个线段相交的碰撞体(PxShape);
Sweep检测跟Raycast检测类似,但是投射出去的是一个或者一组形体(PxGeometry),检测物理世界中跟这个/组形体相交的碰撞体(PxShape);
Overlap检测跟上面两个不一样,它是给定某位置的一个形体(PxGeometry),检测物理世界中跟这个形体相交的碰撞体(PxShape)。
其次,PhysX 3.2中,对于每一种场景查询,都支持快速获取是否有检测结果的*Any的查询,以及返回所有检测结果的*Multiple的查询;同时,对于Raycast和Sweep,还支持查询最近的检测结果*Single的方法。Overlap类型的查询不支持这种*Single的方法,是因为原理上,Overlap的相交检测是没有方向的,所以无法判断那一个结果是最近的,只能返回所有结果。了解了这一点,SDK提供的场景查询方法就很好记了,就是这些:
raycastAny(...);
raycastSingle(...);
raycastMultiple