挖一个坑,chipmunk和cocos2d-js初体验

基于cocos2d-js和chipmunk,创建了一个简单Scene和一个layer,初始化space,加入一个body、一个shape、一个physicsSprite,然后支持拖拽layer和body。

遇到第一个坑来自于cocos2d-js,它有几种渲染模式,定义在project.json里,默认为0

// "renderMode" sets the renderer type, only useful on web :

// 0 - Automatically chosen by engine

// 1 - Forced to use canvas renderer

// 2 - Forced to use WebGL renderer, but this will be ignored on mobile browsers

其中canvs渲染模式下,physicsSprite::syncPhycisTransform()函数坐标位置转换有bug,导致屏幕上显示的图像和物理节点位置不一致。此问题已经修复如下

挖一个坑,chipmunk和cocos2d-js初体验_第1张图片
图1

第二个坑来自于chipmunk,问题出在pointQueryFirst,这个函数是用来查询触摸点位置是否存在物理节点。这个bug导致我们在模拟器、web上都运行正常,但是在device上出错。目前暂时的解决办法是把第二个参数改为cp.ALL_LAYERS,如下

var shape = _space.pointQueryFirst(_mousePos, cp.ALL_LAYERS, cp.NO_GROUP)

你可能感兴趣的:(挖一个坑,chipmunk和cocos2d-js初体验)