SpriteBuilder中的碰撞分类(Categories)和掩码(Masks)

来源:互联网 发布:攻守道 知乎 编辑:程序博客网 时间:2024/05/01 05:21

假如有2种对象player和触发器(trigger),当玩家进入到触发器区域时则由触发器对象通知所有注册过触发器通知的对象,然后由这些对象自行选择做一些事情,比如:阻碍player的前景,触发陷阱等等.

那么如何检测player是否进入触发器区域呢?这就需要player和trigger对象发生碰撞.但是等等,player对象不仅仅和触发器对象发生碰撞,还和边界(border)对象发生碰撞.

为了区分不同种类的对象是否发生碰撞,我们需要正确设置好对象的分类属性和掩码属性.

先看player对象,其分类为player,掩码设置为trigger,border和obstacle;因为player需要和trigger,边界和障碍物发生碰撞.

再看trigger对象,其分类为trigger,掩码设置为player;这意味着trigger只能和分类为player的对象发生碰撞(除非对象分类为空?),因为player已经在其masks中设置了trigger,并且trigger也在自身的masks中设置了player.

碰撞仅仅发生参与的两者相互的分类在对方的掩码中,或者当至少一个参与者的掩码区域为空(这表示该参与者masks包括所有的其他mask,意味着它将和所有其他对象碰撞).

0 0
原创粉丝点击