谢谢鸟! |
本帖最后由 Sion 于 2013-4-21 13:00 编辑 0、拜读不敢当,这些东西基本都是百度就能找到的... 1、如果不是最小子区域,区域的 @objects 就代表处于分割该区域十字上的物体。 因为物体是有体积的,位于区域十字上的物体被认为是有可能与该区域内的任何物体发生碰撞。 2、cache?是那个bitmap的缓存吗?就是默认系统提供的那个- -b 3、最好根据需要来建立模型,我现在做ARPG,人物模型都是全部用圆形,好处理,效果也不差。横版的话,我觉得用椭圆或者矩形比较好。计算两个不规则模型的碰撞太复杂,如果非要用复杂的模型,与它相碰撞的模型最好用简单的。两个椭圆的碰撞处理就已经非常复杂了。说实话这个玩意比较适合的是弹幕游戏,基本上只用计算点跟面的碰撞。如果进行面与面之间的碰撞检测,要消耗很多资源,随着物体数量的增加呈平方增长。一堆物体挤在一块的话,再优化也要卡- -b。当然,只是处理很少几个物体的话,模型复杂一点也不会卡的。 这个范例里因为是弹幕游戏,所以我偷懒了,每次判断都直接重置区域管理器,再把物体放进去。 后来做别的测试,因为物体碰撞以后又进行位置移动处理,然后再进行碰撞计算。像这样处理的话不但不精确,还变得很卡。 所以还是建议不要重置区域管理器,逐个对需要移动的物体进行 remove — 处理移动 — insert 这样的处理。 |
仔细拜读了一遍,说一下自己的理解,还不是很充分请指正 首先是创建物体类,它们由中心定位。 然后创建四叉树,首先是整张地图,然后把每个区域按象限分成四个subtree,然后再继续分subtree直到深度达到预设为止。 然后遍历物体中心坐标,先判断他在supertree的象限,如果有subtree的话就就分给相对的subtree然后一直分到不可再分为止 找物体删除也是同样的方法 但是有几个地方还是不太清楚,
还有就是每新建1个碰撞对象类,就要写和其他所有类型匹配的函数对么? 那有没有可能有检测不规则像素块?比如说几个正方形对象的集合?会不会影响效率,怎么判断中心点? |
有些看懂了 有些没看懂 本人 还处于 小白阶段 希望 楼主 可以讲解下 还有就是 可以吧脚本注释写详细些么 |
正好在做像素移动和碰撞的东西。学习了。 但是为什么每次出现让我很想研究的东西的时候都是有那么多作业的时候。。。 |
这东西是带体积的对象管理器,用于管理平面内的对象。 适合做射击游戏,ARPG等等,比我写那个四叉树管理器强大多了。 此外,游戏蛮好玩。 |
好像很底层的样子。我试试去 |
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2024-11-12 19:43
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.