亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Unity 3D 酷跑游戲的設計與實現

        2022-03-24 04:11:00李愛軍
        現代計算機 2022年19期
        關鍵詞:按鈕游戲效果

        李愛軍

        (蘇州職業(yè)大學計算機工程學院,蘇州 215104)

        0 引言

        主要游戲方式便是酷跑。以一個成功的酷跑游戲《神廟逃亡》為例,我們可知酷跑類游戲的主要功能。玩家不能控制角色的移動速度,隨著游戲時間的推移,角色移動的速度越來越快,玩家操作的時間越來越短,考驗玩家的反應能力來達到增加游戲難度的目的。

        1 游戲主要設計

        1.1 游戲類型定位

        游戲有很多種類,主要有策略游戲、動作游戲、競速游戲、卡牌游戲、冒險游戲、體育游戲、休閑游戲、音樂游戲、模擬游戲、射擊游戲等。

        本游戲為酷跑游戲,應歸為競速游戲或休閑游戲。

        1.2 運行環(huán)境

        本游戲的運行環(huán)境為手機Android 6.0 及以上系統(tǒng)版本,它的優(yōu)點是游戲界面非常簡潔,且占用的內存資源少,操作起來很方便。

        1.3 游戲玩法

        本游戲主要靠滑動屏幕控制角色移動來操作游戲,控制角色躲避障礙拾取金幣。游戲地圖分為三個跑道,向左滑為向左跑道移動,向右滑為向右跑道移動,向上滑為跳躍,向下滑為滾動,當角色在空中時向下滑動可以使角色快速落地滾動。

        1.4 游戲流程

        玩家運行主程序進入游戲畫面,出現開始菜單。開始菜單包含兩個按鈕,開始和退出。點擊開始按鈕,游戲開始運行,點擊退出按鈕,退出主程序。開始游戲后彈出暫停按鈕,點擊暫停按鈕游戲暫停,出現暫停菜單。暫停菜單包含兩個按鈕,返回游戲和退出游戲。點擊返回游戲,游戲繼續(xù);點擊退出按鈕,游戲退出。當游戲角色死亡時,出現結束菜單。結束菜單包含兩個按鈕,再次開始游戲和退出游戲。點擊再次開始游戲,游戲重新開始;點擊退出游戲,退出主程序。

        1.5 開發(fā)技術

        本游戲是采用3D 虛擬技術和游戲物理引擎進行開發(fā)的,游戲的現場布景具有很強的真實感、立體感以及逼真的光影效果,用戶能夠在游戲中感受到絢麗多彩且富有沖擊感的感官體驗。

        2 游戲界面搭建

        2.1 酷跑角色與場景搭建

        2.1.1 酷跑角色與場景搭建

        在Scene 界面通過導入模型,拖拽搭建等步驟完成場景的初步搭建。

        2.1.2 金幣組

        將8個金幣設為一組,布置在跑道上。

        2.1.3 障礙物與碰撞監(jiān)測器

        障礙物有木板、小汽車、大巴,分別添加碰撞檢測器。

        2.1.4 道具

        將道具模型導入,制作碰撞動畫粒子特效。

        2.1.5 游戲文本菜單

        游戲菜單用來開始或退出游戲以控制游戲進程,右側為道具buff 剩余時間,右下角為音樂控制按鈕,左上角為收集的金幣數。

        2.2 游戲邏輯實現

        2.2.1 道路設置

        游戲只有一個游戲場景,為一條無限長的馬路。通過交替移動兩段足夠長的道路實現“無限”道路的功能。

        void Update(){

        if(transform.position.z>floorOnRunning.transform.position.z+32)

        { RemoveItem(floorOnRunning);

        Addtem(floor0nRunning);

        floorOnRunning. transform. position=new Vector3(0,0,floorforsard.transform.position.z+32);

        Game0bject temp=floorOnRunning;

        floorOnRunning=floorForward;

        floorForward=temp;}}

        2.2.2 角色奔跑

        作為一個酷跑類游戲,首先要讓游戲主角跑起來,我們通過在主角的模型上掛載一個主角控制腳本來實現。主角的控制腳本名為PlayerController。

        通過在z軸正方向給主角添加一個正值,使主角可以沿z 軸正方向勻速跑動。然后在y 軸負方向,也就是默認的地面方向添加正值,使主角可以穩(wěn)定在地面上,不會違背物理常識。這里沒有選用unity3d 自帶的物理系統(tǒng),因為其系統(tǒng)在應用時發(fā)生明顯的錯誤效果,所以進行了變量的賦值使其實現較真實的物理效果。

        游戲主角以默認速度奔跑:

        moveDirection.z=speed;

        moveDirection.y-=gravity*Time.deltaTime;

        characterController.Move((xDirection*10+moveDirection)*Time.deltaTime);

        酷跑類游戲在游戲過程中會通過緩慢增加主角的奔跑速度來減少躲避障礙物的反應時間,從而起到加大游戲難度的效果。本游戲中主角每奔跑一段固定長度的路程時增加一點奔跑速度,同時為了防止某些實力過于強的玩家在游戲中長時間不失敗導致的主角奔跑速度過高,游戲中還為主角的奔跑速度設置了最大值,使其速度不能無限制增長。

        限制游戲主角的最大奔跑速度:

        private void SetSpeed(float newSpeed)

        { if(newSpeed <=maxSpeed)

        speed=newSpeed;

        else

        speed=maxSpeed; }

        2.2.3 滑動檢測

        本游戲的操作非常簡單,用指針在屏幕上進行上下左右的滑動即可控住主角的移動,一共設置了4個操作檢測,分別為“向上”“向下”“向左”“向右”。

        首先創(chuàng)建一個枚舉類來存放上下左右空5種滑動狀態(tài)。

        滑動方向枚舉類:

        public enum InputDirection

        { NULL,

        Left,

        Right,

        Up,

        Down }

        當玩家沒有觸摸屏幕時,屏幕沒有檢測到指針,滑動狀態(tài)默認為空值,即游戲主角以默認速度勻速奔跑。當玩家向上滑動屏幕時,屏幕檢測到指針,將狀態(tài)更新為“開始滑動”并記錄當前的指針位置。

        當指針以某一個反向持續(xù)滑動20個單位時,記錄此位置與開始滑動位置時的向量,并將其轉化為角度,根據角度分析此次滑動的方向,同時將滑動狀態(tài)更新為“未開始滑動”。

        2.2.4 玩家移動

        當游戲中檢測到玩家的控制輸入后,角色要根據控制指令進行相應的移動。當玩家向左滑動時,如果角色不在最左邊的道路上,那么角色向左移動一格。當玩家向右滑動時,如果角色不在最右邊的道路上,那么角色向右移動一格。

        當玩家向上滑動時,角色進行一次跳躍。通過給角色y軸正方向添加正值來改變角色的豎直方向的位置。

        當玩家向下滑動時,如果角色此時在地面上,那么角色進行一次翻滾,如果角色測試在跳躍中,那么角色迅速落到地面。與跳躍類似,通過給角色y軸負方向添加正值來改變角色在豎直方向的位置。

        翻滾動作代碼:

        if(inputDirection==InputDirection.Down)

        { AnimationManager.instance.animationHandler=AnimationManager.instance.PlayRoll; }

        當主角已經到達最左或最右的位置時不能再往左或往右移動,需要限制主角的移動以免跑出地圖。

        2.2.5 道具效果

        本游戲一共設置了4種道具,分別為磁鐵道具、加速道具、雙倍積分道具和二連跳道具。

        磁鐵道具的效果為:角色自動吸取道路上的金幣,持續(xù)一段時間。實現原理為,為角色添加一個大小等于磁鐵作用范圍的碰撞檢測器,當碰撞檢測器碰撞到金幣時,觸發(fā)金幣的事件。拾取到磁鐵道具時激活該碰撞檢測器,持續(xù)時間結束時自動關閉。

        二連跳道具效果為,玩家可以在跳躍過程中再次跳躍,當角色拾取到二連跳道具時,可以在道具持續(xù)時間內進行二次跳躍。

        二連跳道具代碼:

        void JumpDouble()

        { AnimationManager.instance.animationHandler=AnimationManager.instance.PlayDoubleJump;

        moveDirection.y+=jumpValue*1.3f; }

        雙倍積分道具的效果為:將拾取金幣時獲得的積分翻倍,持續(xù)一段時間。實現原理為:增加積分的數值。

        加速道具的效果為:大幅度提升角色的速度,持續(xù)一段時間。實現原理:增加奔跑速度的數值。

        2.2.6 相機跟隨

        本游戲為第三人稱視角游戲,為了使角色始終處于畫面中央,需要將顯示游戲畫面的相機對象設置為始終跟隨角色移動,位置處于角色身后的斜上方。

        相機跟隨效果代碼:

        void LateUpdate()

        { if(!isShaking

        &&GameController.instance.isPlay

        &&!GameController.instance.isPause)

        { pos.x=target.transform.position.x;

        pos.y=Mathf.Lerp(pos.y,target.transform.position.y+height,Time.deltaTime*5);

        pos.z=target.transform.position.z-distance;

        transform.position=pos; }

        2.2.7 碰撞檢測

        碰撞檢測是非常重要的功能,游戲內幾乎所有的物體交互都要依靠碰撞檢測來觸發(fā)。在游戲制作中,給需要碰撞檢測功能的物體添加碰撞檢測器組件boxcolliger便可實現碰撞檢測。

        當角色觸碰到4 個具有特殊效果的道具時,激活特殊效果,銷毀道具,開啟效果持續(xù)時間計時器。

        當角色觸碰到金幣時,銷毀金幣,增加玩家的積分。如果角色此時擁有磁鐵道具,那么當代表磁鐵效果返回的碰撞檢測器觸碰到金幣時,先使金幣平滑地飛向角色,制作磁鐵吸引的效果,當金幣觸碰到角色時,金幣銷毀,增加玩家的積分。

        當角色觸碰到障礙物時,角色死亡,執(zhí)行死亡動畫。

        障礙物碰撞。障礙物用來阻擋游戲角色的前進,并且在游戲角色碰撞到障礙物時結束游戲。對于大部分障礙物,都可以直接添加碰撞器使其在碰撞時觸發(fā)死亡效果。有兩種障礙物是特例,一種是車輛,游戲中的兩種車輛在玩家碰撞到時會觸發(fā)死亡效果,但是當游戲角色跳躍到車的頂部時,是可以在上面行走的,所以在添加碰撞器時要注意這一點;而另一種是下方有空間的擋板,游戲角色在沒有二連跳時無法越過,只能通過從下方空間翻滾經過,在游戲制作中,翻滾動作雖然會播放翻滾動畫,但是碰撞器并不會播放翻滾動畫,所以要在播放翻滾動畫時短暫地關閉碰撞器,防止碰撞到障礙物,在經過障礙物后再次將碰撞器開啟。

        2.2.8 路面隨機生成障礙物

        酷跑類游戲通常沒有通關功能,所以只要玩家可以保持游戲不失敗,就可以無限進行游戲。而前面講到本游戲實現無限道路的方法為交替移動兩塊足夠長的道路,玩家需要在道路上使用道具或躲避障礙物。為了增加游戲的趣味性,游戲制作中需要在道路上隨機生成各種障礙物或道具。但是在制作過程中發(fā)現,如果道具的生成完全隨機化,那么會出現大量的物品重疊或沒有通路等問題。所以為了保證在相對隨機的環(huán)境下也能正常游戲,解決辦法為手動制作多組道路上的障礙物排列,每當角色移動到新的道路時,隨機選取一組預先制作好的障礙物排列。

        2.2.9 界面顯示

        除了游戲主要的環(huán)境和角色以外,還需要多個UI 界面來顯示一些游戲內數值。本游戲設置了積分顯示,道具持續(xù)時間顯示。積分顯示為記錄玩家拾取金幣的數值,普通情況下玩家每拾取1 個金幣,積分+1,在雙倍積分道具效果持續(xù)時間內,玩家每拾取一個金幣,積分+2。道具持續(xù)時間顯示為記錄玩家當前已激活道具的效果剩余時間,當玩家觸碰到道具時開始計時,當計時時間結束時道具效果結束。

        金幣積分計數代碼:

        public override void HitItem()

        { base.HitItem();

        GameAttribute.instance.AddCoin(1); }

        2.2.10 游戲進程控制

        所有單機都必不可少地設置開始暫停等游戲進程控制。本游戲一共設置了開始游戲、暫停游戲、恢復游戲、重新開始游戲和退出游戲五個選項。第一次打開游戲時彈出開始游戲和退出游戲。點擊開始游戲按鈕,游戲開始并彈出暫停按鈕;點擊退出游戲按鈕,游戲關閉;點擊暫停按鈕,游戲暫停并彈出恢復游戲按鈕和退出按鈕;點擊恢復游戲按鈕,游戲繼續(xù);點擊退出游戲按鈕,游戲關閉。當角色死亡時,彈出重新開始游戲按鈕和退出游戲按鈕。點擊重新開始按鈕,游戲重新開始,開始界面與第一次進入時一致;點擊退出游戲按鈕,游戲退出。通過封裝方法到按鍵,由點擊事件激活。

        當游戲重新開始時,需要將一切數值清空,包括玩家已獲得的積分,當前已激活道具的剩余時間等,還要重置角色的位置和道路的位置。

        2.2.11 動畫與聲音播放

        游戲過程中角色需要切換不同的動畫,正常跑步時播放跑步動畫,向左或向右移動時播放移動動畫,跳躍時播放跳躍動畫,翻滾時播放翻滾動畫,碰撞障礙物時播放倒地動畫。

        本游戲一共有五種不同的音效,分別為菜單鍵點擊音效,金幣拾取音效,觸發(fā)道具音效,碰撞障礙物音效和滑動操作音效。

        3 游戲測試

        在游戲制作完成后,需要進行游戲測試,用來測試游戲中是否有與預期不符的異常。因為Unity3D 引擎可以實時測試的優(yōu)點,我們可以在游戲發(fā)布前先進行初步的流程測試。

        首先測試游戲主角是否能根據玩家的操作進行正確的動作,然后是游戲中的4個道具是否可以正確地激發(fā)效果。同時,道具在激活時,游戲界面右上角的道具效果計時界面也要正確地為道具效果計時,在倒計時結束時道具效果也要同時消失。然后是游戲主角在拾取金幣時是否能正確地記錄金幣數,在雙倍積分效果的持續(xù)時間內拾取金幣是否可以正確地增加雙倍金幣數。還有游戲場景內的各個障礙物測試,不同的障礙物擁有不用的碰撞區(qū)域,游戲角色在碰撞到障礙物時能否順利觸發(fā)死亡效果。最后是游戲菜單,對所有的游戲菜單按鍵測試,例如開始、暫停、退出等按鍵能否正確地實現。

        4 結語

        游戲無論是在汽車的選擇、關卡的選擇還是在音效這一感官體驗上,都能給玩家?guī)聿灰粯拥囊曈X感受與聽覺感受。主菜單界面的幫助界面能夠幫助新手玩家更好地了解本游戲的玩法,選擇不同的車輛進行游戲會給玩家?guī)頍ㄈ灰恍碌母杏X,不同的關卡具有不同的難易程度,能夠適合不同的玩家群體,震撼的游戲背景音樂能夠帶來刺激的聽覺享受。

        猜你喜歡
        按鈕游戲效果
        哪個是門鈴真正的按鈕
        當你面前有個按鈕
        按摩效果確有理論依據
        迅速制造慢門虛化效果
        抓住“瞬間性”效果
        中華詩詞(2018年11期)2018-03-26 06:41:34
        數獨游戲
        瘋狂的游戲
        飛碟探索(2016年11期)2016-11-14 19:34:47
        模擬百種唇妝效果
        Coco薇(2016年8期)2016-10-09 02:11:50
        爆笑游戲
        第八章直接逃出游戲
        小學科學(2015年7期)2015-07-29 22:29:00
        亚洲地区一区二区三区| 少妇仑乱a毛片| 免费精品无码av片在线观看| 国产午夜激情视频自拍| 视频一区中文字幕在线观看| 欧美黑人巨大videos精品| 天天弄天天模| 亚洲国产精品线观看不卡| 蜜桃一区二区三区在线视频| 偷拍偷窥女厕一区二区视频| 久久久久亚洲av片无码v| 国产片AV在线永久免费观看| 亚洲一区二区三区高清视频| 国产欧美在线观看不卡| 中文人妻无码一区二区三区在线 | 免费观看久久精品日本视频| 国产洗浴会所三级av| 久久精品国产亚洲av麻豆色欲 | 久久精品国产亚洲av香蕉| 天天干成人网| 国产精品自在在线午夜出白浆| 成人免费av色资源日日| 韩日午夜在线资源一区二区| 黄色网址国产| 日本一区二区午夜视频| 日韩内射美女片在线观看网站| 国产在线无码制服丝袜无码| 91免费国产| 日本二区在线视频观看| 亚洲成在人网站av天堂| 国产精品九九九久久九九| 女同性恋看女女av吗| 妺妺跟我一起洗澡没忍住 | 久久精品国产亚洲av无码偷窥| 最近日本中文字幕免费完整 | 成年丰满熟妇午夜免费视频| 在线永久免费观看黄网站| 亚洲免费毛片网| 亚洲精选自偷拍一区二| 亚洲精品一区二区| 成人在线免费视频亚洲|