Cocos Creator 系统碰撞检测
程序员文章站
2022-03-13 13:53:34
...
碰撞组件
-
矩形:
-
圆形:
-
多边形
属性:
属性 | 解释 |
---|---|
Editing | 是否开启编辑 |
Tag | 标签,用于区分碰撞组件 |
Offset | 相对于节点的偏移位置 |
Size | 矩形碰撞组件的大小 |
Radius | 圆形碰撞组件的半径 |
Points | 多边形碰撞组件的顶点坐标集合 |
接口:
// 开启碰撞检测,默认关闭
cc.director.getCollisionManager().enabled = true;
// 开启碰撞检测范围的绘制
cc.director.getCollisionManager().enabledDebugDraw = true;
// 开启碰撞组件的包围盒绘制
cc.director.getCollisionManager().enabledDrawBoundingBox = true;
回调:
当碰撞系统检测到有碰撞产生时,将会以回调的方式通知使用者,如果产生碰撞的碰撞组件依附的节点下挂的脚本中有实现以下函数,则会自动调用以下函数,
/**
* 当碰撞产生的时候调用
* @param {Collider} other 产生碰撞的另一个碰撞组件
* @param {Collider} self 产生碰撞的自身的碰撞组件
*/
onCollisionEnter: function (other, self) {
console.log('on collision enter');
// 碰撞系统会计算出碰撞组件在世界坐标系下的相关的值,并放到 world 这个属性里面
var world = self.world;
// 碰撞组件的 aabb 碰撞框
var aabb = world.aabb;
// 节点碰撞前上一帧 aabb 碰撞框的位置
var preAabb = world.preAabb;
// 碰撞框的世界矩阵
var t = world.transform;
// 以下属性为圆形碰撞组件特有属性
var r = world.radius;
var p = world.position;
// 以下属性为 矩形 和 多边形 碰撞组件特有属性
var ps = world.points;
},
/**
* 当碰撞产生后,碰撞结束前的情况下,每次计算碰撞结果后调用
* @param {Collider} other 产生碰撞的另一个碰撞组件
* @param {Collider} self 产生碰撞的自身的碰撞组件
*/
onCollisionStay: function (other, self) {
console.log('on collision stay');
},
/**
* 当碰撞结束后调用
* @param {Collider} other 产生碰撞的另一个碰撞组件
* @param {Collider} self 产生碰撞的自身的碰撞组件
*/
onCollisionExit: function (other, self) {
console.log('on collision exit');
}
参数:
-
矩形:
-
圆形:
-
多边形:
属性 | 解释 |
---|---|
world.aabb | 代表碰撞组件的aabb框,即碰撞产生时,碰撞组件的矩形框,是一个Rect |
world.preAabb | 代表碰撞前上一帧的aabb框 |
world.matrix | 代表碰撞框的世界矩阵 |
world.position | 代表碰撞时碰撞框的位置坐标(圆形碰撞组件特有) |
world.radius | 代表碰撞时碰撞框的半径(圆形碰撞组件特有) |
world.points | 代表碰撞时碰撞框的所有顶点坐标(矩形和多边形碰撞组件特有) |
上一篇: PTA 7-27 家谱处理 (30分)
推荐阅读
-
cocos-creator 脚本逻辑-1
-
cocos creator入门
-
cocos creator Touch事件应用(触控选择多个子节点的实例)
-
全球首家!Cocos Creator正式支持HarmonyOS多设备协同
-
Cocos Creator 热更新工具BUG:重启游戏后热更新无效!(已解决)
-
荐 麒麟子Cocos Creator 3D研究笔记三:角色换装(无动画)
-
用 shader effect 实现雨滴落水效果!Cocos Creator 3D !
-
cocos creator 3D | 拇指投篮 | 3D项目入门实战
-
Cocos Creator - 2D扭曲Shader
-
初探雾效果!shader 源码分析与讲解! Cocos Creator 3D Shader Fog !