999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

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

李愛軍

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

0 引言

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

1 游戲主要設計

1.1 游戲類型定位

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

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

1.2 運行環境

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

1.3 游戲玩法

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

1.4 游戲流程

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

1.5 開發技術

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

2 游戲界面搭建

2.1 酷跑角色與場景搭建

2.1.1 酷跑角色與場景搭建

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

2.1.2 金幣組

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

2.1.3 障礙物與碰撞監測器

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

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 軸負方向,也就是默認的地面方向添加正值,使主角可以穩定在地面上,不會違背物理常識。這里沒有選用unity3d 自帶的物理系統,因為其系統在應用時發生明顯的錯誤效果,所以進行了變量的賦值使其實現較真實的物理效果。

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

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個操作檢測,分別為“向上”“向下”“向左”“向右”。

首先創建一個枚舉類來存放上下左右空5種滑動狀態。

滑動方向枚舉類:

public enum InputDirection

{ NULL,

Left,

Right,

Up,

Down }

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

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

2.2.4 玩家移動

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

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

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

翻滾動作代碼:

if(inputDirection==InputDirection.Down)

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

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

2.2.5 道具效果

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

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

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

二連跳道具代碼:

void JumpDouble()

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

moveDirection.y+=jumpValue*1.3f; }

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

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

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 碰撞檢測

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

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

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

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

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

2.2.8 路面隨機生成障礙物

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

2.2.9 界面顯示

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

金幣積分計數代碼:

public override void HitItem()

{ base.HitItem();

GameAttribute.instance.AddCoin(1); }

2.2.10 游戲進程控制

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

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

2.2.11 動畫與聲音播放

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

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

3 游戲測試

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

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

4 結語

游戲無論是在汽車的選擇、關卡的選擇還是在音效這一感官體驗上,都能給玩家帶來不一樣的視覺感受與聽覺感受。主菜單界面的幫助界面能夠幫助新手玩家更好地了解本游戲的玩法,選擇不同的車輛進行游戲會給玩家帶來煥然一新的感覺,不同的關卡具有不同的難易程度,能夠適合不同的玩家群體,震撼的游戲背景音樂能夠帶來刺激的聽覺享受。

猜你喜歡
按鈕游戲效果
這些按鈕能隨便按嗎?
當你面前有個按鈕
按摩效果確有理論依據
迅速制造慢門虛化效果
抓住“瞬間性”效果
中華詩詞(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
主站蜘蛛池模板: 天天色天天综合网| 欧美成人免费午夜全| 亚洲一级毛片在线播放| 久久午夜影院| 91精品久久久无码中文字幕vr| 久久精品aⅴ无码中文字幕| 日韩欧美国产精品| 第九色区aⅴ天堂久久香| 国产精品三级专区| 男女精品视频| 欧美国产菊爆免费观看 | 一本大道香蕉中文日本不卡高清二区 | 成人福利在线观看| 亚洲精品午夜天堂网页| 欧美一级99在线观看国产| 伊人色在线视频| 欧美无专区| 国产黄在线观看| 久久国产成人精品国产成人亚洲| 婷婷午夜影院| 国产无套粉嫩白浆| 伊人五月丁香综合AⅤ| 区国产精品搜索视频| 粗大猛烈进出高潮视频无码| 日韩无码视频网站| 伊人色综合久久天天| 国产swag在线观看| 午夜日b视频| 久草性视频| 色屁屁一区二区三区视频国产| 亚洲精品福利网站| www.av男人.com| 国产日韩精品欧美一区喷| 久久www视频| 国产丝袜啪啪| 在线不卡免费视频| 国产一区二区三区在线精品专区| 婷婷久久综合九色综合88| 综合五月天网| 老司机久久99久久精品播放| 亚洲高清在线天堂精品| 综合色88| 亚洲欧洲天堂色AV| 成人国产小视频| 呦女亚洲一区精品| 91免费精品国偷自产在线在线| 青青草国产免费国产| 精品少妇人妻一区二区| 亚洲国产天堂久久综合| 亚洲 欧美 中文 AⅤ在线视频| 亚洲午夜片| 久久免费视频6| 欧美一区日韩一区中文字幕页| 亚洲AV人人澡人人双人| jizz国产在线| 国产视频你懂得| 热九九精品| 精品视频福利| 欧美日韩综合网| 一级爱做片免费观看久久| 91成人精品视频| 九九九久久国产精品| 午夜电影在线观看国产1区| 免费一级毛片在线观看| 国产精品久久久久久影院| 97se亚洲综合不卡| 亚洲国产欧洲精品路线久久| 国产亚洲欧美日韩在线观看一区二区| 欧美日韩激情在线| 欧美性久久久久| 成人无码区免费视频网站蜜臀| 黄色一及毛片| 精品超清无码视频在线观看| 97狠狠操| 色九九视频| 美女内射视频WWW网站午夜| 无码又爽又刺激的高潮视频| 老司机久久99久久精品播放| 亚洲日产2021三区在线| 亚洲成在线观看| 免费看的一级毛片| 久久综合干|