实现对物体的碰撞检测,需要引入两个头文件,依次为:
#include "vpIsectorBump.h"(碰撞检测头文件),#include "vpIsectorServiceInline.h"(碰撞检测服务头文件)。
碰撞类视图如图6.12.1所示,碰撞检测服务类视图如图6.12.2所示。
图6.12.1 碰撞检测类继承图
图6.12.2 碰撞检测服务类继承图
碰撞检测主要包括建立碰撞模式、设置碰撞检测、碰撞处理3个部分。恰当地使用碰撞,能够让虚拟的场景更加真实。
建立碰撞模式的代码如图6.12.3所示,其中包含两个对象:
一个是碰撞检测对象:pIsectorBump_bumpIsector,另一个是碰撞检测服务对象:pIsectorServiceInline_myIsectorService。
图6.12.3 Vega Prime应用程序建立碰撞模式(www.daowen.com)
设置碰撞检测的代码如下:
pIsectorBump_bumpIsector->setTarget(pObject_farmhouse);
pIsectorBump_bumpIsector->setPositionReference(pObject_Hummer);
pIsectorServiceInline_myIsectorService->addIsector(pIsectorBump_bumpIsector);
第1句代码设置碰撞检测的目标是房子,第2句代码设置碰撞的位置参考为汽车,第3句把碰撞检测添加到碰撞服务对象里面。第1句与第2句实际上是设置了产生碰撞的两个对象,即房子和车子,第3句就是为这个碰撞提供了一个服务对象。
怎么发现碰撞已经发生呢?有一句关键的代码如下:
在这里发现碰撞后只是弹出一个消息框,提示碰撞已经发生。当然,也可以做自己的处理,例如,让汽车停下来或者用另外一个破损的房屋来代替原来完好的房屋。在主线程中获取碰撞检测及弹出消息框的具体代码如图6.12.4所示。
图6.12.4 Vega Prime应用程序碰撞检测主线程
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。