您的位置:首页 > 其它

《捕鱼达人》游戏制作要点浅析(一) 思路分析

2012-04-17 07:00 302 查看
注:本文不谈程序,只谈思路

一、思想斗争

《捕鱼达人》这款游戏做的的确不错,相信许多人都已经玩过了。但是作为一个业余“码男”的我,玩玩怎么能尽兴,梦想自己也能写出这么一个还算是不错的游戏。终于在一个月黑风高的夜晚,我摩拳擦掌,跃跃欲试,YY良久,决定对它下黑手了!!!YY也许容易,但是老虎咬刺猬,无从下口啊,以前也没有开发过类似的游戏,肿么办!!!!没有头绪就先屡出头绪来,好了,现在开始!!!!

二、结构元素的分析

先分析下这个游戏的主要组成元素:场景、鱼、炮弹、炮台、激光塔、渔网、金币、还有那个销魂的背景音乐。元素看似不少,其实也就两种:动作元素和路径元素。动作元素——是指位置不变,但是动态显示的元素,是有活力的。路径元素——为动态或者静态的元素提供路径支持。

现在看一下这两种元素是如何表达上面的元素(场景、鱼、炮弹、炮台等)的,以游动的鱼为例:

鱼:多帧图片组成动作元素,用来展示鱼的生机,比如尾巴摆动;



游动:一列点组成路径元素,比如直线、曲线(用连续的分段向量表示)等。



看完这两幅图片,大家肯定就有想法了。实现播放一张连续的png图片来表示鱼,将鱼从上面的轨迹始端移动到末端就完成的游动的鱼,其他元素类似。像炮台连移动都省掉了。轨迹是由多段直线组成,问题又简化了,只要实现一条线段的移动,其他就都OK了。具体实现比较easy,唯一注意一点的是,路线是有方向的,计算鱼的位置需要用cos计算角度,用sin判断象限进行角度纠正。Cos象限方向为:正负负正,角度范围为0~180。Sin象限方向为:正负正负,角度范围为-90~90。单用cos或者sin是不正确的。

另外,鱼是有生命周期TTL的,当鱼游出边界或者被捕捞后,生命结束。

三、元素间的相互作用(碰撞检测)

炮弹和渔网可以打渔,炮弹从可转向的炮台发射,鱼被捕后显示动画金币,,,,,,

上面的炮弹和渔网可以捕鱼是最难得一个,其余都比较easy。有人不禁会说,将鱼看成是矩形,检测炮弹碰到鱼不就可以了么?没错,捕鱼达人里面也的确是这样做的,但是有一点估计大家没有想到,先看图:



这种情况下很容易判断炮弹(黑点)在鱼(矩形区域)内。但是下面这种情况要怎么判断呢?



这种情况需要利用矩阵运算对矩形和黑点同时进行绕原点O的旋转,旋转角度如图,这样就转换为上面那种简单的情况了。

但是如果出现下面这种情况要怎么办呢?已知矩形在X1OY1坐标系中的位置,黑点在XOY坐标系中的位置,O1点在XOY坐标系中的位置,图中所示的夹角大小。怎样判断炮弹在矩形区域中呢?



这种情况先我们不转换矩形,而是将黑点旋转并平移转换到X1OY1坐标系,然后又和上面情况一样了,简单吧!!!利用矩阵计算可以大大的简化运算量,爽!!大学没白念!!!

好了,先说这么多,具体系统如何搭建,算法在程序中如何实现,下篇再说,^_^~~~~~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  游戏 算法 音乐