您的位置:首页 > 移动开发 > Cocos引擎

quick-cocos2d-x 中自带物理引擎 PhysicsMaterial 恢复力的问题

2015-07-04 23:17 357 查看
今天在使用物理引擎过程中,发现不管材质第二个字段,恢复力是否设置为0,绑定的物件运动异常,例如一个球落到地面上,落到地面后,并没有静止,仍然会跳动(可能很轻微,也可能很剧烈)这种情况很大概率出现,但不是必定会出现。例如:

 

小球部分:
local body = cc.PhysicsBody:createBox(self:getContentSize(), cc.PhysicsMaterial(0.0, 0.0, 0.0))

地面部分:
local ground = display.newNode()
local bodyBottom = cc.PhysicsBody:createEdgeSegment(cc.p(0, height2), cc.p(width, height2), cc.PhysicsMaterial(0.0, 0.0, 0.0))
ground:setPhysicsBody(bodyBottom)

 

Cocos 官方给出的答复是:

反复测试了一下,有类似于你说的现象,但这不是反弹。而是正常的物理“撞入”然后被拉回,但没有弹出去,这跟反弹是两回事。你开启scene:getPhysicsWorld():setDebugDrawMask(cc.PhysicsWorld.DEBUGDRAW_ALL)仔细观察就知道。

目前引擎并没有直接的阻止这一行为的方式,因为这被CHIPMUNK认为是正常的物理模式。

不过,如果非要解决的话,可以通过碰撞检测的回调里进行处理,阻止小球越过某一坐标线。物理碰撞的使用方式可参考lua-tests或一些教程。相关事件:

EVENT_PHYSICS_CONTACT_BEGIN,

EVENT_PHYSICS_CONTACT_PRESOLVE,

EVENT_PHYSICS_CONTACT_POSTSOLVE,

EVENT_PHYSICS_CONTACT_SEPERATE,
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: