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)

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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值