quick-cocos2d-x 中自帶物理引擎 PhysicsMaterial 恢復力的問題


今天在使用物理引擎過程中,發現不管材質第二個字段,恢復力是否設置爲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,

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章