PhysX 3.2中的场景查询(1)-基础

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
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要实现这个功能,您需要使用 Mogre.PhysX的相关类和方法。以下是一个示例代码,可以帮助您完成这个任务: ```csharp using Mogre; using Mogre.PhysX; // 定义一个查询接口 public class PhysXContactReport : ContactReport { public override bool OnContactNotify(ContactPair pair, ContactPairFlag events) { // 获取接触的两个物理形状 Shape shape1 = pair.Shape1; Shape shape2 = pair.Shape2; // 输出形状的名称 LogManager.Singleton.LogMessage("Shape 1: " + shape1.Name); LogManager.Singleton.LogMessage("Shape 2: " + shape2.Name); return true; } } // 在需要查询的时候,创建一个场景和相关的物理形状 Scene scene = new Scene(); BoxShape boxShape = new BoxShape(new Vector3(1, 1, 1)); // 创建一个查询接口对象 PhysXContactReport contactReport = new PhysXContactReport(); // 进行形状查询并输出结果 scene.SceneCollision.OnContactNotify += contactReport.OnContactNotify; boxShape.QueryShapes(Vector3.ZERO, Quaternion.IDENTITY); // 释放资源 scene.Dispose(); boxShape.Dispose(); ``` 在这个示例代码,我们首先定义了一个 `PhysXContactReport` 类,用于实现查询接口。在 `OnContactNotify` 方法,我们可以获取接触的两个物理形状,并输出它们的名称。 然后,在需要查询的时候,我们创建了一个场景和一个物理形状,并且创建了一个查询接口对象。我们通过调用 `QueryShapes` 方法来进行形状查询,并在查询结果输出了接触的物理形状的名称。 最后,我们释放了所有的资源。 请注意,这只是一个示例代码,您需要根据自己的实际需求进行适当的修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值