好强的优化。
1赞
卧槽 惊现引擎组大佬
虽然说四叉树好用,但是引擎自带碰撞是成对检测的,每一对节点只会检测一次,所以100个节点以下的时候普通检测效率没有你写的差那么多。
normalCheck() {
for (let node of this.nodes) { node.getComponent("Node").setIsCollision(false) node.isCheck = false; // this.tree.insert(node); } for (let i = 0; i < this.nodes.length; i++) { let node = this.nodes[i] for (let j = 0; j < this.nodes.length; j++) { let targetNode = this.nodes[j] if (targetNode === node || targetNode.isCheck) continue let isCollison: any = targetNode.getBoundingBoxToWorld().intersects(node.getBoundingBoxToWorld()) if (isCollison) { node.getComponent("Node").setIsCollision(isCollison) targetNode.getComponent("Node").setIsCollision(isCollison) } } node.isCheck = true; } }
感谢分享!
大佬牛逼,感谢分享~
good job!
这个帧率应该还算一般吧?我自己写的在我电脑上测试都要比这个高50%的帧率
人家是把cpu放慢6倍执行
一样的前置条件
大佬牛逼!
分享一下呗
直接去插件商店搜吧,我的性能比那个还要差一点
谢谢前辈公布源码
mark!!!
上图为四叉树,下图用的BoxCollider,还是要感谢4叉树源码.
感谢分享,学习学习
腻害~腻害~学习了
这种双循环检测算法是有问题的,检测累赘了
比如说3个节点检测碰撞
你是进行3*3=9次的循环检测
而事实上只需要检测三次就可以
即1和2、1和3、2和3检测是否碰撞即可
不过我想题主重点是分享四叉树,感谢分享,学习了



你这个完全不能用啊,首先这力的算法就又问题,如果node 处于旋转状态你这个算法就肯定判断有问题。并且