1: 掌握碰撞检测的基本步骤; 2: 掌握开启碰撞检测和响应碰撞; 3: 完成道具拾取案例,理解group与groupIndex; 1: creator有碰撞检测系统 +物理碰撞系统,这个是两个独立的模块; 2: 给creator的游戏
cc.Class({ extends: cc.Component, properties: { // foo: { // default: null, // The default value will be used only when the component attaching // to a node for the first time // url: cc.Texture2D, // optional, default is typeof default // serializable: true, // optional, default is true // visible: true, // optional, default is true // displayName: ‘Foo‘, // optional // readonly: false, // optional, default is false // }, // ... is_enbale: true, is_debug: true, }, // use this for initialization onLoad: function () { if (this.is_enbale) { var manager = cc.director.getCollisionManager(); manager.enabled = true; // 开启碰撞 if (this.is_debug) { manager.enabledDebugDraw = true; // 调试状态绘制出我们物体的碰撞器的形状 } } }, // called every frame, uncomment this function to activate update callback // update: function (dt) { // }, });
碰撞检测脚本
cc.Class({ extends: cc.Component, properties: { // foo: { // default: null, // The default value will be used only when the component attaching // to a node for the first time // url: cc.Texture2D, // optional, default is typeof default // serializable: true, // optional, default is true // visible: true, // optional, default is true // displayName: ‘Foo‘, // optional // readonly: false, // optional, default is false // }, // ... }, // use this for initialization onLoad: function () { }, // other是道具的碰撞器组件 // self 是自己节点的碰撞器组件 // 碰撞器是一个组件,所以我们可以通过组件 -->节点 // 碰撞开始 onCollisionEnter: function (other, self) { console.log("other.name = ", other.node.name, other.node.group, other.node.groupIndex); if (other.node.groupIndex === 2) { // 与道具相撞 var prop = other.node.getComponent("prop"); console.log("我们捡到了道具:", prop.prop_type); } }, // 碰撞持续 onCollisionStay: function (other, self) { }, // end // 碰撞结束 onCollisionExit: function (other, self) { }, // called every frame, uncomment this function to activate update callback // update: function (dt) { // }, });