1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > cocos creator基础-碰撞检测系统

cocos creator基础-碰撞检测系统

时间:2022-08-19 13:15:23

相关推荐

cocos creator基础-碰撞检测系统

1: 掌握碰撞检测的基本步骤;

2: 掌握开启碰撞检测和响应碰撞;

3: 完成道具拾取案例,理解group与groupIndex;

1: creator有碰撞检测系统 +物理碰撞系统,这个是两个独立的模块;

2: 给creator的游戏世界中的物体来进行分组,指定节点的分组与分组的碰撞矩阵;

3: 代码中获取节点的分组和分组索引: group与groupIndex(0~n);

4: 为每个节点添加碰撞检测区域–>碰撞器(物体形状), 编辑碰撞区域;

5: 代码开启碰撞检测系统(默认是关闭碰撞检测),开启和关闭碰撞检测的调试:

var manager = cc.director.getCollisionManager(); //

manager.enabled = true; // 开启碰撞

manager.enabledDebugDraw = true; // 允许绘制碰撞的区域

6: 碰撞检测函数响应,发生碰撞检测的节点,会调用这个节点上所有组件的统一的三个接口:

onCollisionEnter: function (other, self) // 开始

onCollisionStay: function (other, self) // 持续

onCollisionExit: function (other, self) // 结束

其中other是与这个节点碰撞的节点的碰撞器组件

其中self是自身节点的碰撞器组件

是碰撞器组件,不是节点–>碰撞器组件.node

开启游戏的碰撞检测脚本

复制代码

cc.Class({

extends: ponent,

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 initializationonLoad: 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: ponent,

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 initializationonLoad: 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) {// },

});

复制代码

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。