国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

搶灘登陸射擊類游戲的開發(fā)

2018-12-23 19:54謝云山
無線互聯(lián)科技 2018年7期
關(guān)鍵詞:開始菜單碰撞檢測炮彈

謝云山

(湖南科技學(xué)院 電子與信息工程學(xué)院, 湖南 永州 425199)

1 移動通信和互聯(lián)網(wǎng)融合背景

最近幾年,移動通信和互聯(lián)網(wǎng)成為當(dāng)今世界發(fā)展最快、市場潛力最大、前景最誘人的兩大業(yè)務(wù)。它們的增長速度是任何預(yù)測家都未曾預(yù)料到的。迄今,全球移動用戶已超過15億,互聯(lián)網(wǎng)用戶也已逾7億,中國移動通信用戶總數(shù)超過3.6億,互聯(lián)網(wǎng)用戶總數(shù)則超過1億。移動互聯(lián)網(wǎng)正逐漸滲透到人們生活、工作的各個領(lǐng)域。據(jù)ComScore對蘋果應(yīng)用軟件店(Apple APP Store)一份全面的研究報告中顯示,人們在iPhone和iPod touch上使用最多的軟件是游戲。其中,游戲軟件中70%~75%為3D游戲軟件。

2 功能簡介

20世紀(jì)60年代,戰(zhàn)爭的硝煙在整個歐洲大陸上彌漫,盟軍在大陸上的作戰(zhàn)陷入了焦灼狀態(tài)。為了牽制敵軍的行動并最終取得決定性的勝利,玩家的使命就是:盡最大可能消耗敵人的入侵部隊,阻止敵人的進攻。面對灘頭上潮水一般涌來的敵人,唯一能依靠的就只有身后那門威力無比強大的海防炮臺。

搶灘登錄游戲的操作很簡單,運用上下左右鍵調(diào)整大炮的方位和角度,瞄準(zhǔn)敵方坦克,按下空格鍵就可以發(fā)射炮彈來打擊敵軍。啟動游戲后首先進入的是游戲的圖標(biāo)灰度漸變界面;之后自動進入到Logo灰度漸變界面;然后自動進入游戲聲音設(shè)置界面,單擊“是”,則開啟游戲聲音;單擊“否”,則關(guān)閉游戲聲音;聲音設(shè)置完畢后,自動切換到游戲開始菜單界面;單擊“游戲幫助”,則進入游戲幫助界面;單擊“關(guān)于游戲”,則進入游戲關(guān)于界面;單擊“游戲退出”,則退出游戲;當(dāng)游戲結(jié)束后,則進入游戲結(jié)束界面;當(dāng)進入游戲時,會有視角旋轉(zhuǎn)來讓玩家瀏覽場景;接著旋轉(zhuǎn)視角,場景中還有堅固的炮臺和威武的大炮,在鎮(zhèn)守著海濱要塞;游戲中水上坦克將會逐漸駛向陸地,當(dāng)其登錄后,則會由陸地坦克進行登陸作戰(zhàn);進行游戲時玩家可以用上下左右鍵來控制大炮的轟擊方向和位置,按下空格鍵發(fā)射炮彈;如果玩家轟擊陸地,則播放爆炸效果動畫;若玩家發(fā)射炮彈擊中陸地坦克,則播放爆炸效果動畫并擊毀坦克,同時會有新的敵軍來進攻,并且游戲左上角擊中坦克計數(shù)加1;若玩家發(fā)射炮彈擊中水上坦克,則播放爆炸效果動畫并擊毀坦克;如果玩家轟擊水面,則播放爆炸效果動畫。

3 游戲的策劃

隨著網(wǎng)絡(luò)的不斷發(fā)展,戰(zhàn)爭類游戲越來越受到玩家的喜愛,可以單機對戰(zhàn),可以聯(lián)網(wǎng)對戰(zhàn),驚險刺激,驚心動魄?!稉尀┑顷憽纷鳛橐豢顟?zhàn)爭類射擊游戲,模擬了登陸戰(zhàn)爭中激烈的戰(zhàn)爭場面。只要帶著手機,玩家便可以隨時隨地進入虛擬戰(zhàn)爭世界,享受轟擊敵軍帶來的游戲快感,滿足玩家對游戲娛樂性的要求。

4 游戲的架構(gòu)

4.1 游戲中用到的主要技術(shù)

程序中的公司界面、Logo界面、開始菜單界面、聲音設(shè)置界面、幫助界面、關(guān)于界面及結(jié)束界面均用2D技術(shù)實現(xiàn)。以上界面大部分繼承和擴展自SurfacView并重寫了其中的onDraw方法,并且所有的按鈕均是筆者用貼圖實現(xiàn)的,避免了使用Android自帶控件,使游戲畫面更加絢麗、個性。

游戲時的界面使用3D技術(shù)實現(xiàn),游戲界面繼承和擴展了GLSurfaceView并實現(xiàn)了Renderer接口,通過重寫onKeyDown方法實現(xiàn)與用戶的交互。

4.2 游戲菜單界面的框架合計

游戲開始菜單是游戲的一個重要界面,當(dāng)一開始進入游戲設(shè)置完音樂后,就會進入這個界面。下面闡述一種橫屏模式下帶有滾動效果的菜單界面。開始菜單SurfaceViewMenu.java類是本設(shè)計最主要的類之一,其實現(xiàn)比較復(fù)雜。

(1)onDraw繪制方法,用于繪制位圖。

@Override

public void onDraw(Canvas canvas){……}

(2)初始化菜單的方法,初始化當(dāng)前及靠其左右的菜單項的位置大小參數(shù)。

public void initMenu(){……}

4.3 游戲菜單界面的實現(xiàn)

游戲菜單界面的實現(xiàn),難點在ThreadMenu.java方法。該方法是用于控制菜單拖動的動畫效果的線程,在特定的時間間隔后就會調(diào)用一次repaint方法對菜單界面進行重繪。Repaint方法的主要作用是重繪,其中調(diào)用了onDraw方法。

4.4 游戲界面中主要場景的繪制及實物運動

游戲中山地、海洋、坦克、大炮、炮彈、炮臺、月球、星空及燈塔的創(chuàng)建基礎(chǔ)均是根據(jù)圓面、圓柱體、圓錐體、長方體、球體中的一個或者幾個拼接而成的。關(guān)于地圖的生成,水面的實現(xiàn)方法,是分別運用了山地生成技術(shù)和飄揚的旗幟技術(shù)來完成實現(xiàn)的。山地生成中為了使場景更加真實,在生成山地時做了一定的改動。對于場景中的拼裝物體,如大炮、坦克、炮臺和燈塔,實現(xiàn)方法都比較相似。

關(guān)于在場景中物體的運動,包括水上坦克的運動、陸地坦克的運動,以及炮彈的運動,還有光源的旋轉(zhuǎn)、攝像機的旋轉(zhuǎn)、月球的旋轉(zhuǎn),以及星空的旋轉(zhuǎn)。由于物體的運動實現(xiàn)是有些相似的,所以,我們以炮彈的運動和月球的旋轉(zhuǎn)運動為例來闡述物體運動的實現(xiàn)。

在實現(xiàn)炮彈的運動中,因為炮彈同一時間存在的數(shù)量可以很多,所以將場景中存在的炮彈放在一個炮彈列表中,當(dāng)需要繪制場景時從列表中逐個掃描炮彈,并用一個邏輯類LogicalBullet.java來控制當(dāng)前掃描到的炮彈的位置、速度的大小和方向并檢測是否發(fā)生碰撞,若碰撞則發(fā)生爆炸并播放爆炸動畫,若沒有碰撞則引用DrawBall實例來繪制炮彈。

4.5 各類的設(shè)計

4.5.1 公共類

主類Activity_GL_Demo.java通過繼承和擴展基類Activity來實現(xiàn)的,是整個應(yīng)用程序的入口。主要根據(jù)收到的Handler消息的不同切換到不同的界面,并且控制聲音播放和場景渲染的暫停和恢復(fù)。常量Constant.java類記錄程序中所有類需要用到的常量,便于以后的修改。

4.5.2 2D界面類

圖標(biāo)漸變界面 Surfac洳ewTag.java類,該類用于公司圖標(biāo)等的漸變實現(xiàn)。聲音設(shè)置界面SurfaceViewSound.java類,該類是聲音設(shè)置界面的實現(xiàn)類,主要負責(zé)聲音設(shè)置界面的繪制,控制游戲中聲音的開關(guān)。開始菜單界面SurfaceViewMenu.java類,這個類是開始菜單界面的實現(xiàn)類,實現(xiàn)開始菜單界面的繪制,是連接整個程序中各類的一個集中地,能根據(jù)單擊不同的菜單向Activity_GL_Demo.java發(fā)送不同的Handler消息。幫助界面SurfaceViewHelp.java類,游戲幫助界面由這個類實現(xiàn),用來繪制游戲幫助界面,以顯示游戲的規(guī)則、操作等信息。關(guān)于界面SurfaceViewAbout.java類,該類是游戲關(guān)于界面的實現(xiàn)類,主要負責(zé)游戲關(guān)于界面的繪制,顯示游戲相關(guān)信息。游戲結(jié)束界面SurfaceViewOver.java類,該類是游戲結(jié)束界面的實現(xiàn)類,繪制游戲結(jié)束界面,顯示玩家的得分情況和提供再玩一次的功能。

5 游戲中的碰撞檢測

運用高等數(shù)學(xué)中的向量理論,運用向量知識解決場景中的碰撞問題,主要包括炮彈與山地的碰撞,陸地坦克與山地的碰撞,陸地坦克與海面的碰撞,以及水上坦克與陸地的碰撞。進行炮彈與山地碰撞檢測的最終目的是為了判斷炮彈在何時爆炸,已知炮彈的實時位置和速度。思路如下。矩形為陸地平面上的一個網(wǎng)格,因為整個地圖都是由類似的這些生成三角形拼接而成的,只是陸地平面中的網(wǎng)格是按像素來劃分的,人眼很難辨別,所以看上去像是真實的山地地圖場景,所以在此我們將以拼接三角形來闡述炮彈的碰撞檢測。

對于炮彈碰撞山地的檢測。確定炮彈所在位置對應(yīng)的陸地平面的行、列。求出炮彈所對應(yīng)的平面位置所對應(yīng)的場景中山地的高度。比較炮彈當(dāng)前位置和對應(yīng)山地高度的大小。如果炮彈當(dāng)前位置高于對應(yīng)山地的高度,則沒有碰撞,炮彈繼續(xù)運動;否則,發(fā)生碰撞。

基本算法思想:首先分別求出0號點到1,2號點的矢量,然后由兩個矢量求叉積,得到三角形平面的法矢量(B,C),接著通過法矢量和o號點坐標(biāo)可以寫出三角形平面的方程A(x-xo)+B(Y-Yo)+C(z-zo)=0,然后可以推導(dǎo)出在xz平面上的點對應(yīng)點的y坐標(biāo)的求值公式y(tǒng)=(C(zo-z)+A(xo-x)/B+Yo,最后通過該求值公式求出指定xz平面上的點對應(yīng)的地圖上點的y的值。

在本游戲中,關(guān)于陸地坦克與山地的碰撞檢測、陸地坦克與水面的碰撞檢測,以及水上坦克與陸地的碰撞檢測的方法和炮彈與山地的碰撞檢測相似。

6 游戲的優(yōu)化與改進

如果能在游戲的最后加上游戲成績的存儲與排行,會大大提高玩家對本游戲的體驗。另外,游戲應(yīng)該開發(fā)成多種模式,不同的模式帶來不一樣的體驗,單一的模式會讓游戲很快失去對玩家的吸引力。同時應(yīng)該添加游戲難度的選擇功能,使玩家根據(jù)自己的情況選擇不同的等級進行游戲,這樣才更加合理。

[參考文獻]

[1]吳亞峰,于復(fù)興.Android 3D游戲開發(fā)技術(shù)詳解與典型案例[M].北京:人們郵電出版社,2012.

[2]謝明山,鄧艷芳.Android環(huán)境下開發(fā)五子棋游戲關(guān)鍵技術(shù)研究[J].電子世界,2014(14):390.

[3]于寶華,賈于博,谷蘇港.基于Android的高校學(xué)生畢業(yè)設(shè)計管理系統(tǒng)設(shè)計[J].福建電腦,2017(12):390.

猜你喜歡
開始菜單碰撞檢測炮彈
全新預(yù)測碰撞檢測系統(tǒng)
裝填炮彈
基于BIM的鐵路信號室外設(shè)備布置與碰撞檢測方法
“炮彈”表妹
Unity3D中碰撞檢測問題的研究
騎炮彈飛行
BIM技術(shù)下的某辦公樓項目管線碰撞檢測