Cocos2d-X与游戏开发Cocos Creator

2020-08-11

2020-08-11  本文已影响0人  Thomas游戏圈

前言

在游戏开发中,我们经常需要判断两个物体是否发生碰撞,所以Cocos Creator中给大家提供了碰撞检测系统,以简化大家的开发,下面我们就一起来看下如何使用碰撞检测系统。

一、 碰撞检测系统

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

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

3: 代码中获取节点的分组和分组索引: group与groupIndex;

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

二、 碰撞检测案例

  1. 开启碰撞引擎
const {ccclass, property} = cc._decorator;

@*ccclass*

export default class EnableCollision extends *cc*.*Component* {

    @property({type:cc.*Boolean*, tooltip:"是否开启碰撞检测系统"})

    isEnable: *boolean* = true;

    @property({type:cc.*Boolean*, tooltip:"是否开启碰撞检测系统"})

    isDebug: *boolean* = true;

    private manager : *cc*.*CollisionManager* ;

    onLoad () {

        if(*this*.isEnable){

            *this*.manager = cc.director.getCollisionManager();

            *this*.manager.enabled = *this*.isEnable;

            if(*this*.isDebug){

                *this*.manager.enabledDebugDraw = true;

            }

        }

    }

}
  1. 设置分组和分组匹配


  1. 添加碰撞组件


  1. 有没有碰撞回调处理



上一篇下一篇

猜你喜欢

热点阅读