zoukankan      html  css  js  c++  java
  • 监听刚体之间的碰撞接触

    box2d中的刚体碰撞都是自行处理的无需开发者另行判断碰撞,但有时候我们需要在刚体碰撞时加入一些效果,如发声,或是改变刚体对应的显示对象的状态等,那又如何呢?

    box2d中有个b2ContactListener类,此类提供了4个方法来处理刚体碰撞时的四中情况,分别是:

    /// Called when a contact point is added. This includes the geometry
    /// and the forces.

    public virtual function Add(point:b2ContactPoint) : void{};

    当有刚体接触时调用Add方法,point是接触点。

    /// Called when a contact point persists. This includes the geometry
    /// and the forces.
    public virtual function Persist(point:b2ContactPoint) : void{};

    当刚体之间的接触一直保持着,调用Persist方法,point是接触点。

    /// Called when a contact point is removed. This includes the last
    /// computed geometry and forces.

    public virtual function Remove(point:b2ContactPoint) : void{};

    当接触在一起的刚体刚分开时调用,point为分开之前的接触点。

    /// Called after a contact point is solved.

    public virtual function Result(point:b2ContactResult) : void{};

    这个不知道如何翻译了,搞清楚了再补上吧!

    要监听刚体的碰撞,我们可以继承这个类,然后重写这些方法来处理我们自己的碰撞效果,比如加上声音的播放等等。

    下面是一个应用的例子:

    1。用FlashDevelop建立一个FlashIDE工程,建立ContactTest.fla和ContactTest.as,ContactTest.as作为文档类。在ContactTest.fla库中导入声音导出的类名为MySound,库中再建立一个基类为Sprite的矩形,导出类名为MyFloor,再建立一个基类为MovieClip的圆形,两帧,导出类名为MyBall,再建立一个基类为MovieClip的举行,两帧,导出类名为MyRect。

    2。自定义MyContactListener继承自b2ContactListener,重写了上面四个方法。分别加入了声音和MovieClip的帧跳转命令。

    3。在文档类中,初始化world后,调用world的SetContactListener方法设置碰撞监听。如:_world.SetContactListener(myContactListener);

    下面为个例子:

  • 相关阅读:
    各职业岗位说明
    感慨集中所
    批量插入测试数据
    写作技巧
    Cordova学习
    CocoStudio
    maven使用感受
    org.json
    ApplicationContext
    2017
  • 原文地址:https://www.cnblogs.com/ywxgod/p/1711487.html
Copyright © 2011-2022 走看看