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);

    下面为个例子:

  • 相关阅读:
    Tomcat部署web项目,虚拟目录,上下文(Context),WEB-INF,web.xml,servlet,404
    Android异常:唤醒锁未授权。(Caused by: java.lang.SecurityException: Neither user 10044 nor current process has android.permission.WAKE_LOCK.)
    .hiverc
    Hive安装
    搭建Kafka开发环境
    java实现Kafka的消费者示例
    java实现Kafka生产者示例
    Kafka集群部署
    kafka介绍
    Pig UDF 用户自定义函数
  • 原文地址:https://www.cnblogs.com/ywxgod/p/1711487.html
Copyright © 2011-2022 走看看