Happy Bird
我們做的是一個跟手機遊戲 Angry bird 類似的遊戲,不過我們把遊戲的主角變得不再angry,所以我們取名為 Happy bird。
組員名單
981508 邱真智
981515 徐靖
981519 吳宗倫
981537 馮鳳儀
設計概念
這次的作業需要結合整個學期學到的技術,包括Lighting、Texture mapping、Object loading、
Transformation和Viewing,為了同時達到以上說的功能,我們這組想了很久,最後以手機遊戲angry bird這種拖曳式的射擊遊戲來做呈現。
Lighting : 整個場景中一定會有lighting的設定,所以不多做說明
Texture : 我們想把texture的部份設計在整個場景的背景,並且可以切換,達到效果
Obj : 整個遊戲的主角,happy bird、豬及彈弓(尚未完成) ,都是先用3dx max建出來的模型
之後再匯出obj檔,並讀進來使用
Transformation : 整個遊戲中,happy bird的拖曳,射擊,都是運用到 transformation
Viewing : 在射擊中,我們想出可以設定讓viewer不動,或是跟著happy bird一起動的模式
操作說明
1. 一開始進入畫面是我們的介紹畫面,滑鼠點擊視窗任意位置,即可進入下一畫面
而如果點擊畫面的模型展示,或是按鍵盤 F1鍵,將可以看到我們所做的全部模型
進入模型展示的畫面,可以選擇上下左右鍵觀看不同模型,若要回到最初畫面按F5即可
2. 點選進入遊戲畫面後,接著是選擇遊戲背景的畫面,總共有三個背景,用鍵盤左右鍵選
擇,選取完畢也是滑鼠點擊畫面進入遊戲
3. 拖曳happy bird的方式是,滑鼠點擊不放,並且往後拖曳,直到瞄準好再放開,即可射擊,
而我們設計成有反彈功能,所以如果往鏡頭射擊也可反彈回去
4. 遊戲中,可按滑鼠右鍵,選擇模式
打擊模式可分兩種
(1) 瞄準模式,happy bird會消失,改成線條的方式,以方便瞄準
(2) Happy bird模式,就是預設的模式
視角模式可分兩種
(1) 視角移動模式,射擊出happy bird後,視角會變成happy bird的視角,跟著打擊出去的方
向移動
(2) 視角不變模式,就是預設的看happy bird打擊的模式
5. 每射擊出happy bird,會自動產生下一隻happy bird讓使用者射擊,當三隻happy bird都射擊
完畢,會出現最後的得分畫面
6. 得分畫面,可點擊下方兩處的選項
再玩一次,則遊戲將重頭開始
結束離開,則會將整個程式關閉
7. 備註,整個程式進行中,可以直接點擊鍵盤 F5 ,將可以立刻重頭開始
執行結果呈現
影片,主要展示遊戲流程,和操作方法
開始畫面
選擇背景 - 1
選擇背景 -2
選擇背景 -3
遊戲畫面 - 第一隻happy bird
遊戲畫面 - 第二隻happy bird
遊戲畫面 - 第三隻happy bird
瞄準模式,圖中的線可以用來描準你要打的方向
視角移動模式,可以跟著Happy bird作移動
擊中豬的話,會顯示BINGO跟爆炸畫面
結束得分顯示畫面
寫作方法
1. Texture mapping
主要是參考老師的範例程式和Nehe網站的教學來讀 BMP檔的圖片,而主要注意的地方是圖
片解析度必須為2的次方,所以我們都把所有會用到的圖片都設成 512 x 512。另外一點,因
為整個程式會讀到的texture不只一張,一開始我都是設定在display的時候才讀texture,這樣
會造成每畫一個畫面就要重新讀一次檔案,整個程式就會一下子就記憶體不足,直到後來
我改成在其他call back function 和 init function讀好才到display的時候畫出來,這樣這個問題
就解決了
2. Happy bird的移動
主要是透過 tranlsate 再idle function,每次改變 happy bird的x軸和z軸,這樣就有移動的效果
3. Viewing的移動
這邊只是把 happy bird x軸和z軸的移動量,改成 lookat中 x軸和z軸的移動量,這樣就可以做
到跟著happy bird移動的效果
4. 其他lighting,load obj方法都跟前幾次作業差不多,沒什麼改到
心得與討論
這次的作業因為卡到期末考,所以其實準備的時間不多,好險有分組所以可以把整個作業的想法讓大家一起分工來完成。而這次作業主要很感謝畫模型的同學,真的畫的超像的,我之前有嘗試要畫畫看,不過一直畫不好,而因為基本的transform viewing texture等方法大家都會寫,所以我覺得我們這個作業主要跟別人不一樣的特色就是畫出來的模型。
很快一個學期就這樣過去了,當初第一次上課老師秀學長姐的部落格給我們看的時候,還想說屁啦怎麼可能畫出這些動畫,覺得一學期內一定寫不出這些作業,沒想到最後我們真的可以寫出一個真正能動起來的動畫了。