在较早的版本号如3.0beta使用例如以下代码的话:

    -- add ground
local groudNode = cc.Node:create()
groudNode:setPhysicsBody(cc.PhysicsBody:createEdgeSegment(cc.p(0, landHeight), cc.p(288, landHeight)))
layer:addChild(groudNode) -- add bird
local spriteBird = createBird()
spriteBird:setPhysicsBody(cc.PhysicsBody:createCircle(birdSize))
layerBg:addChild(spriteBird)
local function onContactBegin(contact)
print("onContactBegin")
return true;
end -- bind contact listenser
local contactListener = cc.EventListenerPhysicsContactWithBodies:create(groudNode:getPhysicsBody(), spriteBird:getPhysicsBody())
contactListener:registerScriptHandler(onContactBegin, cc.Handler.EVENT_PHYSICS_CONTACT_BEGIN)
layer:getEventDispatcher():addEventListenerWithSceneGraphPriority(contactListener, layer)

注冊给事件 cc.Handler.EVENT_PHYSICS_CONTACT_BEGIN 的回调函数是会被调用的,然后到了3.0版本号后,以上的代码便无法正常工作,cc.Handler.EVENT_PHYSICS_CONTACT_BEGIN事件并未被触发,须要额外为以上代码中的2个刚体对象groudNode:getPhysicsBody()和spriteBird:getPhysicsBody()分别调用setContactTestBitmask(mask),当中mask取同一个值从而使得2个刚体对象属于同一个Contact測试组,这样才干保证当2个刚体接触时Contact事件能被触发,进而调用回调函数。

正确的演示样例代码例如以下:

    -- add ground
local groudNode = cc.Node:create()
groudNode:setPhysicsBody(cc.PhysicsBody:createEdgeSegment(cc.p(0, landHeight), cc.p(288, landHeight)))
groudNode:getPhysicsBody():setContactTestBitmask(1);
layer:addChild(groudNode) -- add bird
local spriteBird = createBird()
spriteBird:setPhysicsBody(cc.PhysicsBody:createCircle(birdSize))
spriteBird:getPhysicsBody():setContactTestBitmask(1);
layerBg:addChild(spriteBird)
local function onContactBegin(contact)
print("onContactBegin")
return true;
end -- bind contact listenser
local contactListener = cc.EventListenerPhysicsContactWithBodies:create(groudNode:getPhysicsBody(), spriteBird:getPhysicsBody())
contactListener:registerScriptHandler(onContactBegin, cc.Handler.EVENT_PHYSICS_CONTACT_BEGIN)
layer:getEventDispatcher():addEventListenerWithSceneGraphPriority(contactListener, layer)

Cocos2d-x 3.0 Lua编程 之 响应物理引擎的Contact事件回调不运行的问题的更多相关文章

  1. Cocos2d-x 3.0 Lua编程 之 响应Android手机的按键

    演示样例代码例如以下所看到的: local listenerKey= cc.EventListenerKeyboard:create() local function onKeyReleaseed(k ...

  2. Learning Lua Programming (4) Cocos2d-x中Lua编程(一)

    刚开始接触cocos2d-x 下的Lua编程,主要参看了李华明大神的博客中的介绍,http://blog.csdn.net/xiaominghimi/article/category/1155088  ...

  3. C#与C++的发展历程第三 - C#5.0异步编程巅峰

    系列文章目录 1. C#与C++的发展历程第一 - 由C#3.0起 2. C#与C++的发展历程第二 - C#4.0再接再厉 3. C#与C++的发展历程第三 - C#5.0异步编程的巅峰 C#5.0 ...

  4. C# 6 与 .NET Core 1.0 高级编程 - 39 章 Windows 服务(上)

    译文,个人原创,转载请注明出处(C# 6 与 .NET Core 1.0 高级编程 - 39 章 Windows 服务(上)),不对的地方欢迎指出与交流. 章节出自<Professional C ...

  5. C# 6 与 .NET Core 1.0 高级编程 - 40 ASP.NET Core(上)

    译文,个人原创,转载请注明出处(C# 6 与 .NET Core 1.0 高级编程 - 40 章  ASP.NET Core(上)),不对的地方欢迎指出与交流. 章节出自<Professiona ...

  6. C# 6 与 .NET Core 1.0 高级编程 - 40 ASP.NET Core(下)

    译文,个人原创,转载请注明出处(C# 6 与 .NET Core 1.0 高级编程 - 40 章  ASP.NET Core(下)),不对的地方欢迎指出与交流. 章节出自<Professiona ...

  7. C# 6 与 .NET Core 1.0 高级编程 - 41 ASP.NET MVC(上)

    译文,个人原创,转载请注明出处(C# 6 与 .NET Core 1.0 高级编程 - 41 ASP.NET MVC(上)),不对的地方欢迎指出与交流. 章节出自<Professional C# ...

  8. C# 6 与 .NET Core 1.0 高级编程 - 41 ASP.NET MVC(下)

    译文,个人原创,转载请注明出处(C# 6 与 .NET Core 1.0 高级编程 - 41 ASP.NET MVC(下)),不对的地方欢迎指出与交流. 章节出自<Professional C# ...

  9. 腾讯开源手游热更新方案,Unity3D下的Lua编程

    原文:http://www.sohu.com/a/123334175_355140 作者|车雄生 编辑|木环 腾讯最近在开源方面的动作不断:先是微信跨平台基础组件Mars宣布开源,腾讯手游又于近期开源 ...

随机推荐

  1. 用NMAKE创建VS2012 C++工程 HelloWorld

    由于需要精通GDAL的源代码,所以还是有必要精通NMAKE,先来尝试创建一个NMAKE工程. 之前一篇文章Windows7中Emacs 24 shell使用Gitbash已经介绍了如何在Emacs的s ...

  2. 一般报java.lang.NullPointerException的原因有以下几种

    一般报java.lang.NullPointerException的原因有以下几种: ·字符串变量未初始化: ·接口类型的对象没有用具体的类初始化,比如: List lt; 会报错 List lt = ...

  3. Java EE (10) - 资源服务器的整合

    加密(Encryption)和数字签名(Digital Signature)通常被用于保护通讯--加密用来防止数据传输过程中的窃听--数字签名用来防止数据传输过程中的篡改 JDBC: 整合关系型数据库 ...

  4. POJ 1696 Space Ant(点积的应用)

    Space Ant 大意:有一仅仅蚂蚁,每次都仅仅向当前方向的左边走,问蚂蚁走遍全部的点的顺序输出.開始的点是纵坐标最小的那个点,開始的方向是開始点的x轴正方向. 思路:从開始点開始,每次找剩下的点中 ...

  5. 【甘道夫】Apache Hadoop 2.5.0-cdh5.2.0 HDFS Quotas 配额控制

    前言 HDFS为管理员提供了针对文件夹的配额控制特性,能够控制名称配额(指定文件夹下的文件&文件夹总数),或者空间配额(占用磁盘空间的上限). 本文探究了HDFS的配额控制特性,记录了各类配额 ...

  6. 广东省-IT红黑榜排名公司名称

    红榜Top100 Order Company Name Point Change  1 百富计算机技术(深圳)有限公司  94.00 --  2 中国网通广州分公司  88.00 --  3 深圳市汇 ...

  7. 【剑指offer】面试题26:复制的复杂链条

    def copyRandomList(self, head): if None == head: return None phead = head while phead: pnext = phead ...

  8. IOSi科研OS7 具体的使用说明的适应

     新近.我进行了项目iOS7适应,它有没有用7.0SDK它是由于老project采用iOS7.0存在一些问题,以这个机会,我专门整理改编iOS7需要注意的几个地方. 记录,如下面: 一,iOS7 ...

  9. C#中的关键字

    abstract event new struct as explicit null switch base extern object this bool false operator throw ...

  10. URAL 1934 Black Spot --- 最短的简单修改

    右侧是1.维护的同时保持最短路p值至少,我有直接存款(1-p).该概率不满足,为了使这个值极大. #include <iostream> #include <cstdlib> ...