本文主要是介绍怪物消消乐record2,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
距离上一次更新,有一个月05天了,时间匆匆即过
这次游戏基本原型确定好了,要记录的东西很多,慢慢道来:
1.游戏下半区域 消除模块:
难点1:格子连线判断,采用枚举算法,最初是 九宫格 8个方向计算相邻格子,是否同色,同色则连线,然后递归,若累积数小于3,则返回false,第一次用这个算法实现,实践后,可行,但是循环的计算量太大,想减少计算,消耗点空间,提升性能。于是把同颜色的所有格子,放进一个队列,然后,根据选取的颜色,在同色格子里,寻找是否能相邻,相邻则连线,若累积数小玉3,则返回false .大于3,丢入消除队列
难点2:无消除判断,类似难点1,只不过,用了减少支路开销,从颜色最多的格子开始查询,直到第一个满足3连的格子,就返回true,全部不连,则返回false, false触摸打乱模块,重新排序。
难点3:连线回退,开始用纯触摸的方式,回退连线,发现很不好用,然后选择用数据状态的方式,把已连线的块丢进一个队列,离开最后一个块,触发一个控制量,若回到倒数第二个块,则消除,最后一个块的连线,数据控制要准确。
难点4: 遮盖技术,因为上班区域,和下半区域,美术用的一张图,导致无法,用一个Zorder 解决,遮盖问题,选择使用ClippingNode配合DrawNode ,完成上盘区域这个,实现顶层格子下落移动。方法2:可以使用shader,控制渲染区,可控性更强,目前未使用这种方法,类似方法基础源代码找到,因未学习openGL,对这一块控制力不足,未选用次方法,但是以后若需要,再进行研究,在此记录,提示自己以后看到了,选用此方法。
其他细节,就是格子格子的,触摸判断区间要减小, ,以后面图片的触摸区间控制,最合适,否则,以格子原本的大小控制,在边界时,判断会不准确
2.上半区:
炮台,根据策划,出了两种方案
1.单个炮台,寻路,查找怪物,然后攻击(发现不好用,废弃)
2.5个炮台一起上,选择最近的怪物,炮台在本路攻击 (现用)
难点1:
炮台响应攻击,检测怪物,发动攻击。检测怪物,攻击判断。缺一不可。 每一步都要精准控制,不能偷懒,一条线全绑定在炮台上。例如:炮台响应攻击,检测怪物,发动攻击,这时炮台与怪物发生了碰撞,怪物死了,炮台减少血量了,那么炮台可能就攻击落空了。
难点2:
所有炮台,怪物的游戏逻辑的判断分离,比如炮台能否攻击,应该用炮台的血量状态,不能用isVisible,虽然后者更简单,但是不符合游戏逻辑,应该根据游戏逻辑来判断。当然,如果 isVsible false了,那么就是挂了,自然就不能攻击,应该消掉这个炮台数据。
难点3:
美术提供的图片参差不齐,原始大小,各式各样,要修改合适 boundingBox 来配合碰撞检测,很费时间,但是不废脑子。
本游戏特点,因为有固定路线,可以完全放弃碰撞检测,减少update的计算量,直接从路线上判断,根据子弹发射的路径,和怪物的路径,做判断,也可以达到效果。因为目前游戏过小,如果以后要挖性能,可以从这方面入手,施放update内的计算量。
难点4:
道具添加,目前只做了,一个打乱格子的道具,发现,核心按钮,需要调用 格子层的打乱函数。就需要传当前的格子层对象过来调用,中间通过mainScene 中转的,感觉这样不好,内聚性是不是破坏了,但是未找到更好办法,目前采用,未来再找更好办法代替, 道具类准备用抽象工厂来做,未来可能有几十种道具,选择抽象工厂,目前觉得是最好的办法,框架搭建好了,填代码就好了,目前还未遇到问题,不过第一次达这个框架,不知道好不好,待实践检验
总结:
这一月的开发,断断续续,做的内容也不多 ,感觉开发速度不够快,可能经验还是不太足,不过对cocos2dx 的底层倒是更加熟悉了,目前,游戏原型已经具备,准备着手开发,关卡编辑器了,打算用QT来做,以自动生成.Json或者.xml的形式,给战斗主场景调用,根据选择的关卡不同,调用不同的文本,来生成关卡。此方法行不行,好不好用未知。因为缺乏经验,也没人指导,可能中间造了很多浪费时间的轮子,但是能完成需求,我相信就是好的。
类图如下:
这篇关于怪物消消乐record2的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!