美文网首页
碰撞系统脚本控制

碰撞系统脚本控制

作者: 菜鸟_一枚 | 来源:发表于2016-12-19 19:21 被阅读309次

Cocos Creator 中内置了一个简单易用的碰撞检测系统,他会根据添加的碰撞组件进行碰撞检测。
当一个碰撞组件被启用时,这个碰撞组件会被自动添加到碰撞检测系统中,并搜索能够与他进行碰撞的其他已添加的碰撞组件来生成一个碰撞对。
需要注意的是,一个节点上的碰撞组件,无论如何都是不会相互进行碰撞检测的。

碰撞检测系统的使用

碰撞系统接口

获取碰撞检测系统

var manager = cc.director.getCollisionManager();

默认碰撞检测系统是禁用的,如果需要使用则需要以下方法开启碰撞检测系统

manager.enabled = true;

默认碰撞检测系统的 debug 绘制是禁用的,如果需要使用则需要以下方法开启 debug 绘制

manager.enabledDebugDraw = true;

开启后在运行时可显示 碰撞组件 的 碰撞检测范围,如下图


此处输入图片的描述此处输入图片的描述

如果还希望显示碰撞组件的包围盒,那么可以通过以下接口来进行设置

manager.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;
},
点击测试
cc.eventManager.addListener({
    event: cc.EventListener.TOUCH_ONE_BY_ONE,
    onTouchBegan: (touch, event) => {
        var touchLoc = touch.getLocation();

        // 获取多边形碰撞组件的世界坐标系下的点来进行点击测试
        // 如果是其他类型的碰撞组件,也可以在 cc.Intersection 中找到相应的测试函数
        if (cc.Intersection.pointInPolygon(touchLoc, this.polygonCollider.world.points)) {
            this.title.string = 'Hit';
        }
        else {
            this.title.string = 'Not hit';
        }

        return true;
    },
}, this.node);

相关文章

  • 碰撞系统脚本控制

    Cocos Creator 中内置了一个简单易用的碰撞检测系统,他会根据添加的碰撞组件进行碰撞检测。当一个碰撞组件...

  • 使用PHP控制浏览器动作

    系统环境: Mac 原理: 1:使用php语言写控制脚本 2:脚本与chrome驱动(chromedriver)程...

  • VR开发实战HTC Vive项目之保龄球

    一、导入插件和素材 二、物体被抓取脚本 三、搭建场景 四、贴图 五、碰撞交互 六、添加物理材质 七、控制球的行为 ...

  • [Unity Shader] 高级护罩Shader

    C#脚本代码(需要导入DOTween插件): 这个脚本用于监听检测球体的射线碰撞事件,然后把碰撞的点存到数组里传给...

  • 布娃娃系统应用

    本案例是使用animator 控制动画,角色死亡时触发 ragdoll 系统 首先是配置 配置完成后 使用脚本控制...

  • Unity VideoPlayer

    VideoPlayer控制脚本,使用videoplayer组件控制视频频播放 Slider控制脚本,使用进度条控制...

  • 老王教你学编程 scratch初级-2-穿越迷宫

    课程目标 增进脚本循环和判断理解 学会如何通过按键控制角色移动,学会碰撞检测。 学会通过外观类型中的“说”积木结合...

  • HTC vive交互基础

    找到左手右手model:添加碰撞组件 物体添加碰撞组件和刚体 则可以进行碰撞交互 pickUp脚本挂载左手上: 输...

  • Cocos Creator 脚本执行顺序(摘自官方文档)

    脚本执行顺序 完善的脚本执行顺序控制将在新版本中添加,目前请使用下面的原则控制脚本执行顺序: 使用统一的控制脚本来...

  • 2019-04-29

    WINDOWS开启自动脚本 WINDOWS开启自动脚本打开控制面板-系统和安全-管理工具打开计划任务程序在计划任务...

网友评论

      本文标题:碰撞系统脚本控制

      本文链接:https://www.haomeiwen.com/subject/powtvttx.html