AS3空间分区格子碰撞检测
AS3 的格子碰撞检测代码,挺适合做那种对象一多就掉帧的 2D 游戏。它用的是空间分区的思路,把整个场景切成一块块的小格子,每个对象丢进自己所属的格子里。更新的时候只查周围那几格,性能一下子就上去了,逻辑也清晰多了。
格子的大小可以自己定,太小会划太多块,太大又没优化效果。一般根据你游戏里对象的体积来定就行。比如像素风射击游戏那种,每个敌人都小小的,那格子就别太大。你可以用一个二维数组来表示格子地图,每个格子里存对象的引用。
碰撞的时候,直接查自己和邻近格子里的对象就行,效率比一股脑全查高太多。再配合边界框判断,基本够用了。代码里像MyCollisionGrid
这种类,一般会封装好格子的增删查操作,用起来蛮方便。
如果你对象更新频繁,建议别老重建格子数据,用稀疏数组
或对象池会省不少内存。还有,静态的对象(比如墙体)一次性加入就好,别每帧都重新。
,这种方法适合那种动态对象比较多、实时性要求高的场景,比如 2D 横版、塔防、模拟类游戏啥的。如果你在做这类项目,试试这个思路,应该能省不少性能。
你要是对更复杂的碰撞方式感兴趣,比如四叉树、像素级碰撞,我这也有几个链接,四叉树碰撞检测也挺好用的。
MyCollisonGrid.zip
预估大小:21个文件
MyCollisonGrid
文件夹
.actionScriptProperties
3KB
bin-debug
文件夹
GridCollision3.html
5KB
swfobject.js
25KB
history
文件夹
historyFrame.html
798B
history.css
365B
history.js
25KB
MyCollisonGrid.swf
4KB
52.4KB
文件大小:
评论区