Nape 碰撞检测事件 笔记

Nape事件侦听器
Listener是Nape中碰撞事件帧听的核心部分。所有的事件派发后都有Listener对象侦听,然后触发相应的事件处理函数。

包含四个类型:BodyListener、 ConstraintListener、InteractionListener和PreListener。

  • BodyListener:用来侦听刚体在WAKE和SLEEP状态之间切换时派发的CbEvent.WAKE或CbEvent.SLEEP事件
  • ConstraintListener:侦听关节(后续我们详细介绍)状态变化时派发的事件,这些事件有CbEvent.WAKE、CbEvent.SLEEP和CbEvent.BREAK
  • InteractionListener:在刚体或关节发生碰撞时派发的所有事件都由InteractionListener来侦听。这些碰撞事件包括CbEvent.BEGIN、CbEvent.ONGOING和CbEvent.END
  • PreListener: 这个侦听器可以侦听任何碰撞的所有事件。InteractionListener同样也用来侦听碰撞事件,但是每个 InteractionListener对象只能侦听其中某一个事件。PreListener可以同时侦听所有的碰撞事件,也就是说,添加了 PreListener侦听后器后,碰撞在发生、进行和结束时派发的事件都会触发PreListener的事件处理函数。

碰撞检测,所以只用到InteractionListener,构造函数如下:

public function IneractionListener(
                                event:CbEvent,
                                interactionType:InteractionType,
                                options1:Null<Dynamic>,
                                options2:Null<Dynamic>,
                                handler:InteractionCallback -> Void,
                                precedence:Int = 0)

总共有6个参数:

  • event:CbEvent:要侦听的CbEvent事件类型,前面介绍过总共有BEGIN、END、ONGOING、PRE、WAKE、SLEEP和BREAK七种。
  • interactionType:InteractionType:要侦听的碰撞类型,前面同样也介绍,根据碰撞的刚体不同,有COLLISION、FLUID、SENSOR和ANY四种。
  • options1:CbType:侦听碰撞的两个刚体中,限定的第1刚体的类型,和下面的options2搭配使用。Nape中只有符合这两种类型的刚体发生碰撞时,才会派发相应的事件。
  • options2:CbType:侦听碰撞的两个刚体中,限定的第2刚体的类型。
  • handler:InteractionCallback:处理碰撞事件的函数,和Flash中addEventListener里的事件处理函数一样。
  • precedence:Int = 0:当不同的事件侦听器同时侦听相同的刚体之间相同的碰撞事件时,触发侦听器的优先权。

InteractionType的类型中

  • InteractionType.COLLISION:普通刚体之间的碰撞
  • InteractionType.FLUID:刚体与浮力刚体的碰撞
  • InteractionType.SENSOR:刚体与sensor刚体的碰撞

官方API

原文地址:https://www.cnblogs.com/LLLoveLL/p/3336786.html