cocos2d-x lua 物理引擎,速度过快导致的刚体穿透,穿越边界问题

今天在做台球游戏时候发现,母球的刚体在距离边界很近的时候,或者速度很快的时候会发生刚体穿透,穿越边界的现象。

这是cocos封装的chipmunk物理引擎的问题,如果用的是box2d,可以直接设置bullet(true)解决问题,当然3.0之后的开发者

只能如下操作啦:

首先看一下小球和横条的三个bitmask值是否设置正确,如果正确的话有可能是小球速度过快,导致刚体发生穿透现象,可以用以下方法解决:

获取当前的物理世界,将物理世界的autoStep属性设置为false,然后添加一个定时器,设置物理世界的step为一个比较低的帧率。通常update中设置为每帧三次,如果还是会穿透的话就增加次数

之前使用的unity里也有这种现象,但是官当提供了FixedUpdate方法,cocos中其实官方demo也提供了这个解决方案

之后我在PhysicsTest.lua中有这样一段代码:

local  function update(delta)
    for i=1,3 do
    	cc.Director:getInstance():getRunningScene():getPhysicsWorld():step(1/180.0)
    end
end
addBall()
cc.Director:getInstance():getRunningScene():getPhysicsWorld():setAutoStep(false)
layer:scheduleUpdateWithPriorityLua(update, 0)

用在项目有中就好啦!嘻嘻


你可能感兴趣的:(cocos2d-x,lua)