《捕魚達人》遊戲製作要點淺析(一) 思路分析



注:本文不談程序,只談思路

一、思想鬥爭

《捕魚達人》這款遊戲做的的確不錯,相信許多人都已經玩過了。但是作爲一個業餘“碼男”的我,玩玩怎麼能盡興,夢想自己也能寫出這麼一個還算是不錯的遊戲。終於在一個月黑風高的夜晚,我摩拳擦掌,躍躍欲試,YY良久,決定對它下黑手了!!!YY也許容易,但是老虎咬刺蝟,無從下口啊,以前也沒有開發過類似的遊戲,腫麼辦!!!!沒有頭緒就先屢出頭緒來,好了,現在開始!!!!

二、結構元素的分析

先分析下這個遊戲的主要組成元素:場景、魚、炮彈、炮臺、激光塔、漁網、金幣、還有那個銷魂的背景音樂。元素看似不少,其實也就兩種:動作元素和路徑元素。動作元素——是指位置不變,但是動態顯示的元素,是有活力的。路徑元素——爲動態或者靜態的元素提供路徑支持。

現在看一下這兩種元素是如何表達上面的元素(場景、魚、炮彈、炮臺等)的,以遊動的魚爲例:

魚:多幀圖片組成動作元素,用來展示魚的生機,比如尾巴擺動;


遊動:一列點組成路徑元素,比如直線、曲線(用連續的分段向量表示)等。


看完這兩幅圖片,大家肯定就有想法了。實現播放一張連續的png圖片來表示魚,將魚從上面的軌跡始端移動到末端就完成的遊動的魚,其他元素類似。像炮臺連移動都省掉了。軌跡是由多段直線組成,問題又簡化了,只要實現一條線段的移動,其他就都OK了。具體實現比較easy,唯一注意一點的是,路線是有方向的,計算魚的位置需要用cos計算角度,用sin判斷象限進行角度糾正。Cos象限方向爲:正負負正,角度範圍爲0~180Sin象限方向爲:正負正負,角度範圍爲-90~90。單用cos或者sin是不正確的。

另外,魚是有生命週期TTL的,當魚游出邊界或者被捕撈後,生命結束。

三、元素間的相互作用(碰撞檢測)

炮彈和漁網可以打漁,炮彈從可轉向的炮臺發射,魚被捕後顯示動畫金幣,,,,,,

上面的炮彈和漁網可以捕魚是最難得一個,其餘都比較easy。有人不禁會說,將魚看成是矩形,檢測炮彈碰到魚不就可以了麼?沒錯,捕魚達人裏面也的確是這樣做的,但是有一點估計大家沒有想到,先看圖:


這種情況下很容易判斷炮彈(黑點)在魚(矩形區域)內。但是下面這種情況要怎麼判斷呢?


這種情況需要利用矩陣運算對矩形和黑點同時進行繞原點O的旋轉,旋轉角度如圖,這樣就轉換爲上面那種簡單的情況了。

但是如果出現下面這種情況要怎麼辦呢?已知矩形在X1OY1座標系中的位置,黑點在XOY座標系中的位置,O1點在XOY座標系中的位置,圖中所示的夾角大小。怎樣判斷炮彈在矩形區域中呢?


這種情況先我們不轉換矩形,而是將黑點旋轉並平移轉換到X1OY1座標系,然後又和上面情況一樣了,簡單吧!!!利用矩陣計算可以大大的簡化運算量,爽!!大學沒白念!!!

好了,先說這麼多,具體系統如何搭建,算法在程序中如何實現,下篇再說,^_^~~~~~~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章