GameDesign 板


LINE

如先前所言,我希望螢幕上出現的子彈是由不同武器所發射出來 即是說子彈彼此雖然各自獨立,但卻可以對玩家產生混合的影響 (就像開頭所說的DDT+彈弓) 好比圖層一般,層層獨立,組合後變成最後的結果。 依照這個構想,我們可以把不同的武器所發射出來的子彈想像成獨立的"彈幕" 彼此獨立處理自己的移動,刪除,碰撞等運算。而每種武器則各自掌管自己生成的彈幕。 至於武器與子彈的建構,就跟前篇建構STATE一樣,先設計一個武器的原形class與 子彈的原形class,之後每把武器再各自繼承之,並改寫其中的Move(), isHit, Shoot() 等函式即可。 底下我們來看武器與子彈的prototype class: class weapon{ poulic: /*開火速率;發射前準備時間;彈藥;跑位次數等*/ int fireRate; int preapreTime; int ammo; int changePosition; /*彈幕容納*/ MovieClip mc; /*要傳達給子彈的資訊*/ float speed; float damage; /*有的沒的Function*/ void init(); void shoot(); void move(); void isHit(); }; class bullet: public MovieClip{ public: float radius; //子彈方向 float speed; //子彈目前速度 float damage; //子彈殺傷力 }; 這就是所有的武器的原形,同時也是第一把武器的宣告式 第一把武器(彈弓)的行為模式最簡單也最直接: 發射->移動->消失or命中 在shoot() 函式中,武器"Create"一顆子彈,然後在彈幕中登記,告訴彈幕 "我發射了一顆子彈,等會記得幫我處理他的移動以及碰撞嘿~" 於是,彈幕庫每次都會列出所有登記的子彈,然後處理他們的移動(move)及碰撞(isHit) 子彈的座標空間設定,我用的是極座標。藉由角度(radius)以及長度(speed) 來計算出每顆子彈接下來的所在(在frame與frame之間)。 而所謂的移動(protoType),不過就是每1/30秒用radius & speed計算出子彈的位移, 然後累加之,透過每1/30秒一次次的重複計算,就能達到子彈移動的效果。 碰撞(protoType)部分,則是每1/30秒簡單比較每顆子彈的與PLAYER的bounding box 有無相交即可(雷射與黑洞的部分比較麻煩,容後再敘) 至此,前置程式已經接近完成。 把Player的部分補上,就差不多了。 PLAYER,負責接收玩家端的資訊。 可以想見其中必定有一個專門處理鍵盤傳入資訊的Listener,負責把從鍵盤接收到的 資訊傳達給程式處理。 先簡單講一下一開始的Player設計。 class player{ public: MovieClip mc; //實體影片片段 float speed; //移動速度 int turbo; //空白加速度 bool control; //操縱可否 enum ill; //不良狀態 int illCount; //狀態影響計數器 float attractRadius; //引力角度 int attractForce; //引力強度 void moving(); }; 其中基本的如移動速度等不贅述,turbo用來製造"按下空白鍵的突然加速"效果 每按一下空白鍵,turbo會變成10,然後每1/30遞減。這個turbo最後會與 位移相加,假設原本的位移是一次+4; 一下turbo突然變成 +14, 再來是+10, +6... 就能製作出"渦輪加速"的突加/減速度運動。 "ill&illCount"則是用來登記幾種負面狀態的影響。 至於attractXXXX這兩個,用來處理被彈時的後退方向,以及後退的力道。與turbo相同 這個參數也會在最後與位移相加。 其他大多是一些比較繁雜的程式如接收、對應的處理等,這部分我就略過了。 計算一下目前做了些什麼: Seeker具備基本的狀態函式,武器庫也有了一把武器,Player也能移動,攻擊。 簡單的遊戲原形已經完成了(茶) 計算一下目前做了些什麼: Seeker具備基本的狀態函式,武器庫也有了一把武器,Player也能移動,攻擊。 簡單的遊戲原形已經完成了(茶) 於是,最早的版本長的就像底下(大約500行左右): http://studentweb.ncnu.edu.tw/93321523/hb2006/teach/proto.swf (續) 文章轉自暨大霞蔚山城 ★ HenryBBS (henry.twbbs.org) --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.22.18.97







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Gossiping站內搜尋

TOP