设置position报错,怎么看原因呢?

Error
cocos2d-js-for-preview.js:68803
at b2Body.291.b2Body.SetTransformXY (http://localhost:7456/app/engine/bin/cocos2d-js-for-preview.js:68803:46)
at b2Body.291.b2Body.SetTransformVec (http://localhost:7456/app/engine/bin/cocos2d-js-for-preview.js:68800:16)
at cc_RigidBody.syncPosition (http://localhost:7456/app/engine/bin/cocos2d-js-for-preview.js:23114:23)
at cc_RigidBody._onNodePositionChanged (http://localhost:7456/app/engine/bin/cocos2d-js-for-preview.js:23154:14)
at EventTarget.169.CallbacksInvoker.invoke (http://localhost:7456/app/engine/bin/cocos2d-js-for-preview.js:27889:31)
at cc_Node.emit (http://localhost:7456/app/engine/bin/cocos2d-js-for-preview.js:8275:60)
at cc_Node.setPosition (http://localhost:7456/app/engine/bin/cocos2d-js-for-preview.js:8386:1

堆栈跟进去发现是b2world 锁定物理世界了。。。继续查为什么会锁定

简单的两box实验

只能用moveto

我也遇到同样的问题了,偶现。

我是在update里面去setpostion就可以,貌似在碰撞触发这条线一直设置错误。

这个有解决方案么 。 我也遇到同样的问题

不要在onBeginContact里面设置位置,这时候位置状态是被安全锁定的,自己把事件延迟到下一帧处理就好。

1赞

因为需要再update中动态调整位置,出了在update中去掉setPosition外还有别解决方案吗?

意思是用onEndContact去处理吗?

这样不行的!