刚体穿透问题~~~~(官方大大看过来)

刚体直接重叠穿透 而且会一直触发onBeginContact(文件在下面,希望有大佬能帮我看看咋么解决)

NewProject.zip (846.0 KB)

我也想知道怎么解决

你是不是强制更新坐标了,这样物理可能没法正常计算。换成 cc.MouseJoint 来控制刚体的拖拽移动试试。

MouseJoint 拖拽咋么去延迟~~就是手指触摸到哪跟到哪, 还有那个拖动线咋么取消 求告知

延迟就是为了保证不会计算出问题,拖动线是 DebugDraw 开启后出现的,不绘制就没了。

那不满足要求~~而且mouseJoint只能作用于动态刚体 我需要的只是一个跟随手指触摸移动的刚体(实时性有要求),之前用setPosition和线速度移动都会出现刚体重叠穿透 实在不知道咋么解决这个问题了:joy: 求救

那不满足要求~~而且mouseJoint只能作用于动态刚体 我需要的只是一个跟随手指触摸移动的刚体(实时性有要求),之前用setPosition和线速度移动都会出现刚体重叠穿透 实在不知道咋么解决这个问题了:joy: 求救

你先试试刚体类型为 Animation,然后 每次操作坐标就用 body.syncPosition(true) 同步。
不过物理系统的特性就是这样,如果是强制设置position,刚体穿透就是不可避免的。
控制速度移动或者用MouseJoint 才保险一点。

Animation可以`做到和mouseJoint同样的碰撞效果 但是穿透不可避免~~~~ 不知道其他引擎可不可以做到

使用mouseJoint即可,参考demoNewProject-2.zip (55.3 KB)

模拟静态就设置重力缩放为0

1:这个mouseJoint延迟可以取消吗,因为游戏要求手指触摸到那节点跟到哪,所以有延迟游戏体验很差,如果不可以有什么替代方法吗~~~
2:即使设置重力为0增加密度的方法模拟static 但是当节点碰到其他刚体,或则鼠标快速move突然松开依然会被弹开,这要如何解决呢?

谢谢解答:slightly_smiling:

这个是通过关节去实现的,你可以通过设置参数减少延迟的感觉。如果要手指触摸到哪里节点就要在哪里,那么就建议书用setPosition,不过这样的话就可能会出一些物理模拟上的问题

不想弹开的话,那就把碰撞体和被碰撞体的弹性系数都设置为0就好,这样自然就不会弹开了
如果鼠标快速移动突然松开后不想物体继续移动的话,那你可以将LinearDamping设置大一些就行

具体是那个参数可以减少延迟的效果呢,我之前找了好久也没发现合适的~~~ 求教

一个是弹性系数,一个是阻尼

嗯嗯 好的辛苦官方大佬了,我去试试不行还来问:smiley:

mouseJoint 可以通过代码控制移动吗~~~

这个方法是咋用的 :grin:

creator中有类似于cocos2d-x 中mnouseJoint中的 SetTarget方法吗