站在那边的开发的同志们,我现在想我需要分享一下我在我的游戏里面如何设置Box2d 接触监听器和过滤器的。
Contact Listeners可以让你控制一个对象如何跟一个碰撞起反应。我接触监听的要领在这里。Box2D有他自己的接触监听器类叫做b2ContactListener。你可以根据自己的需求来扩展此类,就像这样: 注意,我的所有游戏对象都是继承自我的基GameObject类,这个有HandleContact() 和 HandleNonObjContact() 方法,这两个方法被大量的游戏对象重写。这个以为着我可以根据不同的游戏对象通过修改这些方法而达到不同的个性化的碰撞反应。例如,我想在一棵树被球碰撞后,让它放大,我们可以这么干: 现在,只要我的树被一个Ball碰撞,它就会调用BlowUp() 方法。怎么样,帅不帅?酷不酷?性感不性感?
Contact Filters 可以让你控制何种事物会跟彼此起冲突。和Contact listener 一样,box2d有一个类叫做b2ContactFilter, 你可以在这里进行扩展以控制注册何种物体起冲突。让我们想想,当我们想让Ball和树可以产生碰撞效应,和云不能产生碰撞效应,该怎么实现呢。你可以像下面这样: 然后你的Ball, Tree 和 Cloud 类将是这样 现在,为了初始化box2d的物体,我有个这样的方法,这个方法使用我自定义的接触监听器和接触过滤器: 现在,你看到啦,我是如何处理自定义的接触监听和过滤的!
Contact Listeners可以让你控制一个对象如何跟一个碰撞起反应。我接触监听的要领在这里。Box2D有他自己的接触监听器类叫做b2ContactListener。你可以根据自己的需求来扩展此类,就像这样: 注意,我的所有游戏对象都是继承自我的基GameObject类,这个有HandleContact() 和 HandleNonObjContact() 方法,这两个方法被大量的游戏对象重写。这个以为着我可以根据不同的游戏对象通过修改这些方法而达到不同的个性化的碰撞反应。例如,我想在一棵树被球碰撞后,让它放大,我们可以这么干: 现在,只要我的树被一个Ball碰撞,它就会调用BlowUp() 方法。怎么样,帅不帅?酷不酷?性感不性感?
Contact Filters 可以让你控制何种事物会跟彼此起冲突。和Contact listener 一样,box2d有一个类叫做b2ContactFilter, 你可以在这里进行扩展以控制注册何种物体起冲突。让我们想想,当我们想让Ball和树可以产生碰撞效应,和云不能产生碰撞效应,该怎么实现呢。你可以像下面这样: 然后你的Ball, Tree 和 Cloud 类将是这样 现在,为了初始化box2d的物体,我有个这样的方法,这个方法使用我自定义的接触监听器和接触过滤器: 现在,你看到啦,我是如何处理自定义的接触监听和过滤的!