最近工作较忙,没有大块时间弄,东拼西凑出来点时间,昨天把基础游戏流程做完了,大概说下其中的开发重点.
1.数据驱动显示.
这点一定记得,很重要.之前看过很多人写塔防的战斗逻辑,几乎都是用moveto,moveby去做,单纯跑起来好像没什么问题,但是这类的实现方式,后期可拓展性太差.
打几个比方:
第一个情况倒是有解决方案,就是去源码修改每帧的刷新时间,不使用真实的时间,修改为固定时间,这样整场战斗下来,每一帧的时间是一样的,这些内置的moveto,moveby 每帧位移也就一样了
第二个如果要达到两边同步的效果,那就需要用到帧同步的东西了,后续如果有做到会详细解读下
所以考虑到种种原因,这个地方我使用的是之前写的mvc的方式驱动位移,简单说就是 controller 做每帧的位移数据,通过向量速度时间,去算出来本次刷新需要位移的位置,这样在view层就完全不需要运算,而是根据position去显示即可.
2.老生常谈的效率问题.
3.碰撞
这里我没有使用碰撞系统,这里也是要根据具体游戏内容来设定的,我这里只是单纯的使用了距离计算.给子弹一个目标点位置,然后加个随机数来调整落点.就可以看起来很自然.
如果你的游戏比较特殊,需要一些碰撞检测的话,可以直接使用自带的碰撞系统.cocos自带的是使用了 2d的 obb 碰撞算法.比较简单,可以去源码看看
在其他就没什么了,塔防类游戏算是比较简单的游戏类型,实现也不困难,目前我做过的最麻烦的一个游戏就是几年前仿了一个coc(部落冲突),里面的单位实在是太多了,有存在攻击建筑的情况,而且寻路是实时演算的,当时这块东西也都放在c++层,开的线程处理的,不然一个mainloop是真的扛不住,这种规模的塔防就需要在设计初期做好规划,不然后面改起来也是要命的.别的东西,有想到的在更新,如果有问题可以评论交流