Cocos Creator CollisionManager碰撞效率测试

本文测试了Cocos Creator 2.3.4中的CollisionManager与自写BoxCollider的碰撞效率。结果显示,自写碰撞类在PC、Mate9和iPhone6上的性能普遍优于CollisionManager,尤其是在大量碰撞体时,速度提升约3倍。
摘要由CSDN通过智能技术生成

版本:2.3.4

 

CollisionMananger源码

collisonMananger默认会检查所有collider的碰撞,计算还是相当复杂的。

 

 

 

BoxCollider测试

在pc上写一段简单测试代码

const {ccclass, property} = cc._decorator;

@ccclass
export default class ColliderTest extends cc.Component {

    @property(cc.Canvas)
    canvas:cc.Canvas = null;

    start () {
        let manange:cc.CollisionManager = cc.director.getCollisionManager();
        manange.enabled = true;
        manange.enabledDebugDraw = true;

        this.boxColliderTest();
    }
    public boxColliderTest(){
        for(let i=0;i<1000;i++){
            let node:cc.Node = new cc.Node();
         
Creator打地鼠游戏hitmouse.zip // Learn cc.Class: // - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/class.html // - [English] http://docs.cocos2d-x.org/creator/manual/en/scripting/class.html // Learn Attribute: // - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/reference/attributes.html // - [English] http://docs.cocos2d-x.org/creator/manual/en/scripting/reference/attributes.html // Learn life-cycle callbacks: // - [Chinese] https://docs.cocos.com/creator/manual/zh/scripting/life-cycle-callbacks.html // - [English] https://www.cocos2d-x.org/docs/creator/manual/en/scripting/life-cycle-callbacks.html cc.Class({ extends: cc.Component, properties: { mouse: [cc.Node], hammer: cc.Node, txtCount: cc.Label, }, // LIFE-CYCLE CALLBACKS: onLoad () { var manager = cc.director.getCollisionManager(); manager.enabled = true; this.count = 0; this.txtCount.string = this.count; }, start () { cc.director.getScheduler().schedule(this.logic, this, 0.5, false); this.node.on(cc.Node.EventType.TOUCH_START, function(event){ for(let i = 0; i < this.mouse.length; i++){ if(this.mouse[i].opacity == 0){ continue; } let parent = this.mouse[i].parent; let maskPos = parent.parent.convertToWorldSpaceAR(parent.position); let maskRect = cc.rect(maskPos.x - parent.width / 2 , maskPos.y , parent.width, parent.height); let mouse = this.mouse[i]; let mousePos = parent.convertToWorldSpaceAR(mouse.position); let mousRect = cc.rect(mousePos.x - mouse.width / 2, mousePos.y - mouse.height / 2, mouse.width, mouse.height); let mixRect = new cc.Rect(); maskRect.intersection(mixRect, mousRect); if(mixRect.contains(event.g
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值