版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
中國礦業(yè)大學(xué)計(jì)算機(jī)學(xué)院本科生課程報(bào)告課程名稱游戲設(shè)計(jì)與開發(fā)報(bào)告時(shí)間學(xué)生姓名學(xué)號專業(yè)任課教師任課教師評語任課教師評語(①對課程基礎(chǔ)理論的掌握;②對課程知識應(yīng)用能力的評價(jià);③對課程報(bào)告相關(guān)實(shí)驗(yàn)、作品、軟件等成果的評價(jià);④課程學(xué)習(xí)態(tài)度和上課紀(jì)律;⑤課程成果和報(bào)告工作量;⑥總體評價(jià)和成績;⑦存在問題等):成績:任課教師簽字:年月日摘要為了學(xué)習(xí)Unity3D游戲引擎,為了進(jìn)一步了解并熟悉該款引擎,本文描述了如何制作了一個(gè)三維的RPG類游戲項(xiàng)目,這個(gè)游戲的背景來源于一部叫做《草原歷險(xiǎn)記》的電影。通過對該項(xiàng)目的制作和學(xué)習(xí),來了解用Unity3D開發(fā)游戲的利與弊,以及這款游戲引擎未來的優(yōu)勢。本文所述的游戲項(xiàng)目開發(fā)所用的開發(fā)工具是Unity3D自帶的開發(fā)工具,叫做MonoBehaviour,選擇的開發(fā)語言是JavaScript。該游戲項(xiàng)目是一個(gè)小型的3D游戲制作,開發(fā)周期短,實(shí)現(xiàn)所涉及的技術(shù)也是學(xué)習(xí)Unity3D必備的一些知識,但是也是一些重要的基礎(chǔ)知識,很多其他的Unity3D游戲制作,也是通過把Unity3D的各個(gè)功能模塊一點(diǎn)點(diǎn)組織拼接起來而成的。關(guān)鍵詞:Unity3D;游戲引擎;語言開發(fā)環(huán)境;RPG游戲。AbstractInordertoknowandlearnmoreaboutUnity3Dgameengine,thispapersdescribeshowIdevelopaparkourgameprojectwhosebackgroundcomesfromamoviecalledFrozen.Throughthestudyofthisgameproject,wewillgettoknowtheprosandconstousethegameengineandit’sadvantageofthefuture.Wedidthisgameprojectusingit’sowndevelopmenttoolnamedMonoBehaviour.WeusedJavaScriptasitsdevelopmentlanguage.Thisisasmall3DgamewithshortdevelopmentperiodandsomebasictechniqueswhichareimportantknowledgeManyotherUnity3DgamesaretheunionofsomeUnity3Dfunctionparts.Keywords:Unity3D;gameengine;languagedevelopmentenvironment;RPGgame.目錄1概述 頁1概述1.1游戲類型偏向動(dòng)作的冒險(xiǎn)類游戲(RPG)1.2內(nèi)容概述這款游戲是一個(gè)簡單的3d動(dòng)作游戲,角色控制一個(gè)小機(jī)器人。為了克服前行道路上的障礙,他使用他的能力來改造和重新設(shè)計(jì)自己。1.3核心概念這款游戲的核心概念類似于當(dāng)前流行的動(dòng)作冒險(xiǎn)游戲,集逃亡、尋寶、打斗為一體,并在形式上有所創(chuàng)新。游戲只有一個(gè)機(jī)器人主角,玩家可控制該機(jī)器人穿過森林、山丘、平原等險(xiǎn)惡環(huán)境,并在前行的過程中同其他機(jī)器人作斗爭,通過克服險(xiǎn)惡環(huán)境和打敗敵人來提升自己的力量,還可通過找到補(bǔ)給站的方式不斷補(bǔ)充能量和生命值,并最終勝利到達(dá)目的地。1.4目標(biāo)人群以青少年為主,不要求具備豐富的游戲經(jīng)驗(yàn)。1.5收費(fèi)設(shè)定設(shè)計(jì)原則:讓玩家的消費(fèi)能得到實(shí)際的好處,感覺“賺了”而不是“虧了”。消費(fèi)引導(dǎo):分級消費(fèi)+消費(fèi)前置。分級消費(fèi):對于缺乏消費(fèi)能力的玩家,如果一開始就看到太多超出自身能力的消費(fèi),便會(huì)因門檻太高而放棄游戲,但如果收費(fèi)的額度根據(jù)玩家的VIP等級來設(shè)定,以層層遞進(jìn)的方式引導(dǎo)消費(fèi),玩家就會(huì)更容易接受。消費(fèi)前置:將欲取之必先與之,對于付費(fèi)帶來的好處,可以讓玩家先有所體驗(yàn),以此來促進(jìn)消費(fèi),比如贈(zèng)與有時(shí)限的VIP、贈(zèng)與紫色套裝的部件等。1.6主要特點(diǎn)單機(jī)化傾向和策略性。單機(jī)化傾向:頁游玩家的時(shí)間較為零散,難以在短時(shí)間建立牢固的合作關(guān)系,為了降低交互門檻,游戲內(nèi)大多玩法都采用SNS游戲異步交互的形式,且前期以體驗(yàn)劇情為主,但人與人之間的關(guān)系往往是讓玩家留在游戲的重要原因,故游戲后期會(huì)加入大量以幫派為單位的活動(dòng)。策略性:首先,玩家的選擇是多樣的,對于機(jī)器人的形式可以有多種選擇,每一個(gè)小的關(guān)卡都有多種通關(guān)策略;其次,冒險(xiǎn)類游戲?qū)?zhàn)術(shù)的制定與執(zhí)行都有很高要求,只要操作得當(dāng)便可戰(zhàn)勝強(qiáng)過自己的對手。1.7玩家的追求點(diǎn)核心追求:玩家對于探險(xiǎn)冒險(xiǎn)的追求。長期追求:拓展劇情、通過精英關(guān)卡、競技場名次、副本進(jìn)度。短期追求:裝備等級、冒險(xiǎn)等級、通過關(guān)卡等級。1.8游戲競爭分析采用3D畫面,制作精良、逼真。易于上手,能夠抓住玩家的心理,激起玩家對于勝利的渴望,促使玩家繼續(xù)玩下去。針對當(dāng)前市場3D游戲大多過于復(fù)雜,操作不太方便,本款游戲風(fēng)格簡潔,清新自然,各種游戲元素引人入勝,音響效果出色。另一個(gè)亮點(diǎn)就是增加了環(huán)境陷阱,玩家在對付敵人的同時(shí)還得注意周圍的環(huán)境。1.9獨(dú)特賣點(diǎn)第三人稱視角,視野遼闊,讓你仿佛置身于游戲場景中,與角色融為一體,角色的成長就是你的成長,角色的情感就是你的情感,角色的勝利就是你的勝利!1.10游戲的主要玩法多人副本:形式:參考《魔獸世界》的副本設(shè)計(jì),每一個(gè)boss都會(huì)有個(gè)性化的技能,玩家需要根據(jù)其特點(diǎn)來選擇不同的應(yīng)對策略。目的:難度較高,對玩家間的配合要求較高。作用:高級裝備的主要來源。1.11游戲背景與代入感游戲背景:我們的主角正坐在一條運(yùn)輸船上,心情很復(fù)雜。他自己的國家被叛軍圍困了,國王命令他前往鄰國搬救兵。不幸的事情發(fā)生了,船體由于受到激流的影響撞到了暗礁,船沉沒了,他游到了下游的森林的岸邊。由于剛才事故的影響,他發(fā)現(xiàn)自己的一些零件已經(jīng)受到了損害,他必須找到地方對自己進(jìn)行維修。他不知道他現(xiàn)在在什么地方,但他可以看到遠(yuǎn)處的摩天大樓的輪廓。他知道這就是他的目的地。為了完成自己的使命,他艱難地踏上了行程。很快,他遇到一個(gè)老路標(biāo)站,這似乎是破舊的,已經(jīng)壞了。這些舊站用于提供旅行機(jī)器人燃料和提供維修服務(wù),但由于近年來航空旅行變得更加普遍,他們已經(jīng)不再使用。為了克服前行道路上的障礙,他準(zhǔn)備使用其服務(wù),他開始尋找一種方法來修復(fù)自己。1.12游戲的后期開發(fā)用多種表現(xiàn)方式來延長數(shù)值區(qū)間,雖表現(xiàn)形式多樣,但都是對數(shù)值的不斷提升。針對數(shù)值的加成,設(shè)計(jì)相應(yīng)的表現(xiàn)途徑。1.13文檔目的綜合考慮到游戲的各個(gè)環(huán)節(jié),使各零散系統(tǒng)相輔相成,關(guān)聯(lián)成統(tǒng)一的整體,盡量避免開發(fā)后期對重要模塊的修改。在設(shè)計(jì)初期考慮收費(fèi)點(diǎn)、玩家追求、新手引導(dǎo)等重要環(huán)節(jié),避免游戲成型后再生硬的加入這些設(shè)計(jì)。2主要玩法2.1劇情副本2.1.1設(shè)計(jì)原則平滑:副本間坡度平緩且副本數(shù)量多,玩家每一次能力的提升都會(huì)在劇情副本中得到及時(shí)的展現(xiàn)。2.1.2游戲定位1、承載游戲世界觀。2、提供原始的裝備積累(健康點(diǎn)和能量點(diǎn)等)。3、提供不同形式的武器。2.1.3收費(fèi)點(diǎn)能量點(diǎn)和健康點(diǎn)的購買,增加副本的次數(shù)。2.1.4主要特點(diǎn)NPC參與:NPC會(huì)參與作戰(zhàn),一方面是為了更好的推動(dòng)劇情,另一方面是在副本難度較高時(shí)幫助玩家順利通過。難度分級:普通關(guān)卡只有一個(gè)難度,BOSS關(guān)卡會(huì)有普通和精英兩個(gè)難度。副本評分:根據(jù)通過副本的回合數(shù)、剩余HP等因素對副本進(jìn)行評分。2.2日常副本2.2.1設(shè)計(jì)原則基于冒險(xiǎn)類游戲的特點(diǎn),上手容易但策略性強(qiáng),滿足付費(fèi)玩家和高端玩家的需求。2.2.2收費(fèi)點(diǎn)增加每日副本的次數(shù)。2.2.3主要特點(diǎn)隨著玩家能力的提升,可通過的關(guān)卡也會(huì)提升,主要由玩家的輸出能力決定體現(xiàn)人民幣玩家的優(yōu)勢。3游戲結(jié)構(gòu)3.1核心游戲玩法游戲的玩法實(shí)際上就是玩家在不同的地圖中一路前進(jìn),途中遇到不同的敵人,都需要將其一一打敗,最終在關(guān)卡處玩家要打敗多個(gè)Boss才能通關(guān)。3.2游戲方式3.2.1攻擊階段游戲的玩法非常簡單。玩家可以沿著地圖一直向前行進(jìn),玩家的攻擊招數(shù)包括拳擊,腿部攻擊,兵器攻擊。最后,游戲中的四個(gè)boss都有各自的絕招。玩家的生命也是有限的。3.2.2獎(jiǎng)勵(lì)階段獎(jiǎng)勵(lì)階段出現(xiàn)在攻擊階段之間,玩家在生存下來之后,獲得一段短暫的休息時(shí)間作為獎(jiǎng)勵(lì),當(dāng)玩家受到的傷害玩家可以通過休息恢復(fù)一些生命。4游戲過程描述游戲開始-->說明-->游戲-->提示框4.1游戲開始階段游戲開始時(shí),應(yīng)該有一段開場白,由電影或小動(dòng)畫構(gòu)成。4.1.1說明模式當(dāng)游戲未開始游戲時(shí),《神龜闖關(guān)》會(huì)進(jìn)入說明模式。在這個(gè)模式下,屏幕顯示一些指示說明和高分,按下任意鍵開始游戲。4.1.2游戲模式這是游戲的主要娛樂模式。4.1.3提示框玩家在游戲的過程中將獲得不同的提示,包括游戲的技巧,游戲的操作方法,以及游戲的打斗技巧,玩家需要根據(jù)不同的提示做出相應(yīng)的操作。4.2游戲要素4.2.1玩家玩家控制一個(gè)機(jī)器人,扮演游戲的主角。4.2.2其他人物反派人物包括一些小嘍啰,小兵,以及最終的Boss。它會(huì)上下左右在沒有玩家的地方游動(dòng)。5主要系統(tǒng)5.1設(shè)計(jì)原則連貫、簡單、智能。連貫:節(jié)奏連貫,兩回合之間不會(huì)專門留下等待操作的時(shí)間,需要玩家在回合內(nèi)完成操作。簡單:玩家參與戰(zhàn)斗,可以什么都不做,系統(tǒng)會(huì)自動(dòng)釋放技能;可以只選擇技能,系統(tǒng)會(huì)幫助玩家選擇最合適的對象;也可以既選擇技能又選擇技能對象。智能:系統(tǒng)會(huì)根據(jù)boss的特點(diǎn)合理的選擇技能與技能對象,使玩家重戰(zhàn)術(shù)而輕操作。5.2主要特點(diǎn)回合制的戰(zhàn)斗方式5.3角色設(shè)計(jì)機(jī)器人開始的時(shí)候能夠使用一個(gè)簡單的泰瑟槍攻擊——一個(gè)短距離范圍效果攻擊,可以給任何周圍的機(jī)器人造成少量傷害。他還可以使用泰瑟槍來重啟任何機(jī)器人的驛站來補(bǔ)充泰瑟槍的能量。一旦他開始同該地區(qū)以外的城市的機(jī)器人戰(zhàn)斗,他可以收集敵人掉落的零件,諸如齒輪零件,螺絲和其他更大的塊。如果他集齊足夠多的零件,他就可以為自己建立一個(gè)新的形式,玩家可以自由切換。不論機(jī)器人以何種形式存在,他總是保留加速和跳躍的能力。機(jī)器人的既有健康點(diǎn)和能源點(diǎn)是他的兩個(gè)主要統(tǒng)計(jì)數(shù)據(jù)。如果他的健康狀況下降為零,在受到敵人攻擊或環(huán)境損害之前,他必須到達(dá)最近的中轉(zhuǎn)站來重啟自己。他利用能源來提高速度和在不同形式之間進(jìn)行轉(zhuǎn)換。進(jìn)入中轉(zhuǎn)站之后他的能源點(diǎn)和健康點(diǎn)又能夠恢復(fù)正常。5.4.角色成長機(jī)器人在該游戲中有四種形式泰瑟槍形式:小部件的基本形式,他的特殊能力需要的形狀,可以對周圍任何事物造成少量傷害,它也可以用來啟動(dòng)破碎的機(jī)器人。防衛(wèi)形式:當(dāng)機(jī)器人獲得一定的能量和積分后,可以自動(dòng)生成一個(gè)盾牌來抵擋攻擊者的攻擊,主要用于防御。當(dāng)時(shí)機(jī)合適時(shí),機(jī)器人可以通過拋出盾牌來給敵人以一定的攻擊。格斗形式:在這種形式下,機(jī)器人的身體會(huì)自動(dòng)生成一個(gè)爪鉤。機(jī)器人可以用爪鉤可以射殺敵人,還可以利用爪鉤讓自己懸掛在懸崖上,讓自己搖擺到另外的一個(gè)環(huán)境中。翼形式:在這種形式下機(jī)器人身體長出金屬翅膀,讓他從一個(gè)平臺到另一個(gè)滑翔(但不是飛——他需要立刻解決或找到其他方法來真正提升自己)。翅膀也給他一個(gè)大范圍效果(面積效應(yīng))攻擊,翅膀周圍形成能量漩渦,能夠?qū)?yán)周圍的任何東西造成嚴(yán)重的損害(比泰瑟槍的傷害能力更大)。這種攻擊而更具破壞性,需要更長的時(shí)間來發(fā)動(dòng)技能。一旦機(jī)器人獲得一種新形式,一個(gè)按鈕將出現(xiàn)在界面接口上,允許玩家切換可用的形式,當(dāng)然得提供相應(yīng)的能量。6游戲世界這里的世界布局包括五個(gè)不同的地區(qū),每一個(gè)組成一個(gè)完整區(qū)域(某些地區(qū)可能會(huì)分成多個(gè)區(qū)域,這取決于其大小和復(fù)雜性)。玩家開始處在森林的區(qū)域,在一個(gè)小空地殘骸包圍圈中。起伏的平原森林中點(diǎn)綴著零零星星的樹。小的道路蜿蜒穿過平原,最終結(jié)束在一座別墅的前面。穿過別墅,一個(gè)新的路徑繼續(xù)通過肥沃的牧場和農(nóng)田。這里海拔開始逐漸升高,玩家的跳躍和追逐變得越來越困難。通過梯田農(nóng)田后,機(jī)器人到達(dá)了荒涼的巖石區(qū),這里非常陡峭,到處都有峽谷和風(fēng)車。風(fēng)車被電線和遠(yuǎn)方的城市連接起來,不斷地輸送著電能。在這里機(jī)器人為了在陡峭的懸崖上行走需要學(xué)習(xí)使用爪鉤。在懸崖的頂部上,現(xiàn)在可以清晰地看到這個(gè)城市坐落在山谷中。這時(shí)機(jī)器人使用他的新滑翔能力,可以機(jī)動(dòng)的路上,避開障礙物和其他飛行機(jī)器人。在懸崖底部,一個(gè)巨大的哨兵機(jī)器人守衛(wèi)著城市的入口。這時(shí)機(jī)器人別無選擇,為了完成自己的任務(wù),他必須戰(zhàn)勝這個(gè)大機(jī)器人。7游戲世界區(qū)域分解及劇情設(shè)計(jì)7.1森林機(jī)器人開始在森林地區(qū),游戲開發(fā)者可以設(shè)計(jì)一個(gè)小地方作為安全區(qū)域,在這里玩家可以學(xué)習(xí)基本控制操作。練習(xí)結(jié)束后玩家遇到一個(gè)破舊的中轉(zhuǎn)站,在這里得到他的第一個(gè)武器—泰瑟槍。當(dāng)機(jī)器人進(jìn)入恢復(fù)好的中轉(zhuǎn)站后,通知機(jī)器人各種部件的使用方法,告訴他要小心。機(jī)器人必須用最后的能量來分解路徑以順利地通過廢墟。7.2平原這個(gè)地區(qū)覆蓋廣泛,點(diǎn)綴著零零星星的樹和花。小的道路蜿蜒穿行其中,在這里要提醒玩家應(yīng)該往哪個(gè)方向前行,但是他也可以探索其它的地方。兔子形狀的小型野生機(jī)器人和其他嚙齒動(dòng)物漫步在平原中。這些可憐的老機(jī)器人被先進(jìn)的城市無情地拋棄,它們盲目攻擊任何十字架狀的東西。道路的盡頭是一個(gè)漂亮的別墅,進(jìn)入院子,機(jī)器人享受到了補(bǔ)充能量的服務(wù)。在補(bǔ)充完能量之后,機(jī)器人需要打敗一個(gè)boss來獲得進(jìn)入下一個(gè)區(qū)域的權(quán)限。7.3農(nóng)場機(jī)器人然后開始探索不斷攀升的農(nóng)場和牧場。機(jī)器人需要使用他的新形式以抵御新機(jī)器人的攻擊,他們中的許多人拍小炮彈或扔石頭。玩家還需要變得更善于跳躍,因?yàn)檗r(nóng)場的地形是跌宕起伏的。頂部的農(nóng)場在一個(gè)大的露臺上,這里有另一個(gè)mini-boss——憤怒的拖拉機(jī)機(jī)器人。他不喜歡機(jī)器人在他的作物上滾,因?yàn)檫@樣破壞了作物。他想要把機(jī)器人撕成碎片。拖拉機(jī)機(jī)器人不可戰(zhàn)勝,玩家必須轉(zhuǎn)移或避免。這時(shí)玩家要把機(jī)器人變換成防衛(wèi)形式。成功躲避拖拉機(jī)機(jī)器人的攻擊后,機(jī)器人到達(dá)一個(gè)可以塑造臨時(shí)爪鉤的中轉(zhuǎn)站。7.4風(fēng)車山之后下面的區(qū)域急劇上升,裸露的懸崖和巖石露出。在這更貧瘠的區(qū)域上覆蓋著風(fēng)車。利用他的新爪鉤,機(jī)器人可以利用巖石峭壁把自己推到新的高度。聰明的玩家將使用風(fēng)車上的爪鉤,這樣可以把機(jī)器人扔到很遠(yuǎn)的區(qū)域隱藏起來。在懸崖的頂部,風(fēng)車機(jī)器人在等待著機(jī)器人。這個(gè)風(fēng)車的移動(dòng)速度非常快,它使用風(fēng)車葉片的旋轉(zhuǎn)劍,降低他們來攻擊地上的機(jī)器人。機(jī)器人這時(shí)可以變換出他所有的形式,還可以使用爪鉤扔石頭。風(fēng)車機(jī)器人在空中飛行著對機(jī)器人發(fā)動(dòng)攻擊,因?yàn)樗乃俣确浅??,所以機(jī)器人必須和他保持著安全距離。7.5城市機(jī)器人的下一個(gè)到達(dá)地區(qū)是山谷城市所在地,這時(shí)他必須使用新的滑翔能力。這感覺更像一個(gè)滾動(dòng)的賽車,球員需要控制機(jī)器的方向和攻擊任何靠得太近的事物。這個(gè)區(qū)域沒有boss,玩家可以節(jié)省在到達(dá)最后的中轉(zhuǎn)站之前的能量。7.6護(hù)衛(wèi)室現(xiàn)在機(jī)器人終于來到了這座城市,他必須戰(zhàn)勝守衛(wèi)在門口的哨兵機(jī)器人。這個(gè)boss使用近戰(zhàn)和防御姿態(tài),玩家必須切換不同形式來應(yīng)對boss的一舉一動(dòng)。擊敗了boss后,玩家終于進(jìn)入這座城市,完成了他的任務(wù)。7.7驛站驛站分散在世界各地用于多種目的,他們給機(jī)器人提供免費(fèi)的健康點(diǎn)和能源點(diǎn),并擁有修復(fù)機(jī)器人存儲的能力。商店總是允許機(jī)器人賣回他多余的物品,如額外的螺絲,齒輪和修理工具。并且,如果機(jī)器人有一定的組合項(xiàng)目的庫存,他可以通過交易來獲取一種新形式。8玩家界面8.1說明/高分界面在圖示上有一些簡單的說明,以及得分列表。高分會(huì)被保存下來。并且,在此點(diǎn)擊任意鍵開始游戲。8.2游戲控制機(jī)器人是由鍵盤控制,用箭頭或WASD鍵控制運(yùn)動(dòng)和特殊分配鍵映射到增強(qiáng)能力,逃避和跳躍功能。使用鼠標(biāo)選擇界面上的按鈕,如果玩家喜歡,也可以映射到特定的鍵。8.3基本的戰(zhàn)斗1、右擊攻擊。每個(gè)轉(zhuǎn)換都有自己的攻擊動(dòng)畫。2、敵人遵循兩種基本模式。3、當(dāng)玩家敲擊GotHit動(dòng)畫,把玩家推離敵人。4、如果擊敗敵人,敵人就消失了,在設(shè)定的時(shí)間后重生。5、如果機(jī)器人被打敗了,需要重生,當(dāng)然需要付出能量值。9多媒體素材9.1美術(shù)主要有游戲的地圖設(shè)計(jì),包括森林、平原、農(nóng)場地圖以及城市地圖。9.2音樂音效9.2.1整體目標(biāo)該款游戲的音樂應(yīng)該帶有武俠的風(fēng)格。格斗的聲音會(huì)經(jīng)常發(fā)出,音樂應(yīng)該制造緊張感和興奮感。9.2.2音效5~10種不同的打斗音效多個(gè)人物的特色音效。9.2.3音樂游戲開始時(shí)的音樂攻擊階段的音樂新游戲/狂暴模式的音樂每一關(guān)結(jié)束的音樂高分的音樂。10玩家的體驗(yàn)流程10.1新手引導(dǎo)10.1.1引導(dǎo)內(nèi)容一些操作是玩家必須掌握后才能進(jìn)行游戲的,新手引導(dǎo)著重對這類操作進(jìn)行指引。其次是對游戲的亮點(diǎn)進(jìn)行展示,比如一些特色的系統(tǒng)、深刻的劇情或優(yōu)美的場景。再次是對一些攻略性的內(nèi)容進(jìn)行指引,使玩家能夠快速的理解游戲模式。1、劇情副本讓玩家了解游戲背景,學(xué)會(huì)如何進(jìn)入劇情副本劇情副本從畫卷中展開,畫卷為地圖關(guān)卡,首先出現(xiàn)簡單癿文字介紹歷史,之后大陸被切割成幾塊,玩家點(diǎn)擊進(jìn)入。2、接交任務(wù)讓玩家在不知做什么癿時(shí)候形成查看任務(wù)癿習(xí)慣引導(dǎo)玩家查看當(dāng)前任務(wù),在任務(wù)完成時(shí)提交。3、使用技能讓玩家學(xué)會(huì)如何使用技能戰(zhàn)斗中引導(dǎo)玩家點(diǎn)擊技能欄圖標(biāo)使用技能。4、使用裝備讓玩家學(xué)會(huì)如何使用裝備打開道具欄,雙擊裝備。5、進(jìn)入家園讓玩家學(xué)會(huì)如何進(jìn)入家園點(diǎn)擊主菜單進(jìn)入家園。6.、恢復(fù)PP讓玩家學(xué)會(huì)如何恢復(fù)PP。7.、強(qiáng)化裝備讓玩家學(xué)會(huì)如何強(qiáng)化裝備8.、消費(fèi)指引進(jìn)行付費(fèi)癿挃引增加訓(xùn)練位置,讓玩家更好癿10.1.2引導(dǎo)方式操作流程:每步引導(dǎo)都是一個(gè)任務(wù),讓玩家形成習(xí)慣,從任務(wù)中查看下一步做什么。每步引導(dǎo)都有“下一步”的按鈕,且位置不變,玩家可以不移動(dòng)鼠標(biāo)點(diǎn)擊“下一步”來。通過引導(dǎo):如果玩家長時(shí)間未操作,引導(dǎo)會(huì)自動(dòng)進(jìn)行。指引方式:將玩家的短期目標(biāo)羅列出來,讓玩家明白當(dāng)前操作的目的。當(dāng)玩家完成一些任務(wù)步驟后會(huì)有成就提示,一些高額獎(jiǎng)勵(lì)也會(huì)突出顯示。NPC貫穿新手指引,他會(huì)和玩家并肩作戰(zhàn)、也會(huì)幫助玩家完成強(qiáng)化、訓(xùn)練等操作功能隨著等級的提升而開放,對于玩家暫時(shí)無法體驗(yàn)的功能將屏蔽入口。在新手階段之后,引導(dǎo)方式變?yōu)闂l件觸發(fā),當(dāng)玩家有需求時(shí)才進(jìn)行引導(dǎo)。11開發(fā)環(huán)境(Unity3D)介紹11.1Unity3D簡介Unity3D是由UnityTechnologies開發(fā)的一個(gè)游戲引擎,操作界面如下圖1.1所示,它集快速性交互性于一體,帶有強(qiáng)大的渲染引擎,對DirectX、OpenGL擁有高度優(yōu)化的圖形渲染管道,能夠允許開發(fā)者能夠高效直觀的開發(fā)出2D或者3D游戲,是一個(gè)全面整合的游戲引擎。并且,Unity3D游戲引擎能夠十分方便的將開發(fā)出
的游戲發(fā)布到各個(gè)平臺,如iPhone、Android等平臺。此外,還可以用UnityWebPlayer插件將作品發(fā)布成網(wǎng)頁游戲,玩
家只需下載這個(gè)很小的插件就能輕輕松松的玩Unity網(wǎng)頁版游戲。Unity3D游戲引擎通過使用植被系統(tǒng)Unitree,提供了大量的Shader供開發(fā)者使用,這些Shader完全足以滿足開發(fā)者的需求,使得即使在低端硬件設(shè)備下也
能
夠運(yùn)行廣闊茂盛的植被景觀。打開地形編輯器,從左到右依次是:地形拉升降低、準(zhǔn)確的繪制地形高度、地形圓滑、地形文理繪制、地形植被繪制樹木、地形植被繪制-草及小物體、地形參數(shù)設(shè)置。另外,它支持所有主要
的文件格式,并能和其他應(yīng)用程序協(xié)同工作。它還用了PhysX的物理引擎,使得開發(fā)者能夠輕松的實(shí)現(xiàn)各種物理效果。Unity游戲引擎提供了柔和陰影與烘焙的高度完善的光影渲染系統(tǒng),它的著色器整合了易用性、靈活性和高性能的特點(diǎn)。目前,Unity3D游戲引擎最新版本是Unity4.0,它能將你的作品發(fā)布到MAC、Windows、安卓等十個(gè)以上當(dāng)今盛行的平臺。此外,購買功能更加強(qiáng)大的正版Unity3D游戲引擎,經(jīng)授權(quán)之后可以安裝在2個(gè)不同的系統(tǒng),如一個(gè)Windows,一個(gè)Mac,官方網(wǎng)址是。Unity3D游戲引擎研討會(huì)正在茁壯發(fā)展。第一次Unity3D游戲引擎研討會(huì)是在2010年5月,舉辦地點(diǎn)是在韓國,引發(fā)了許許多多的商家投資并簽訂了引擎預(yù)定協(xié)議。亞洲作為Unity3D游戲引擎公司的一個(gè)重要戰(zhàn)略地,2013
年在上海舉辦了研討會(huì)。不久Unity3D游戲引擎公司又宣布取消支持對Flash的支持。11.2Unity3D語言開發(fā)環(huán)境及開發(fā)工具Unity3D是一款綜合型的游戲開發(fā)引擎。其中MonoBehaviour是該公司自己開發(fā)的一個(gè)編譯工具,自然跟Unity3D是十分兼容的,比如調(diào)試等就十分方便。當(dāng)然,也可以選擇自己的編譯工具,如VisualStudio2010,只需要在菜單里面設(shè)置一下默認(rèn)編譯工具就行,這樣在你創(chuàng)建并打開代碼文檔時(shí)就默認(rèn)打開了你所設(shè)置的編譯工具。目前,Unity3D只允許3種編程語言:C#、javascript、Mobo。其中C#運(yùn)用較為廣泛,因?yàn)樗募嫒菪员容^好,便于更好的發(fā)布到各個(gè)平臺。11.3Unity3D應(yīng)用目前,用Unity3D游戲設(shè)計(jì)引擎開發(fā)手機(jī)游戲的比較多,如勇者之心、神廟逃亡系列、憤怒的小鳥等;也有用來開發(fā)單機(jī)游戲的,如軒轅劍六、搗蛋豬等;網(wǎng)頁游戲諸如新仙劍Online、QQ樂團(tuán)等。在虛擬現(xiàn)實(shí)方面,只需要將在Maya或者M(jìn)ax等其他三維軟件里面做出的模型導(dǎo)出為fbx格式,然后導(dǎo)入U(xiǎn)nity3D,設(shè)置攝像機(jī)代
碼、UI、Build。11.4需要解決的問題11.4.1游戲項(xiàng)目中要解決的問題游戲項(xiàng)目要解決的問題很多,所以最關(guān)鍵的是先要管理好資源文件,分類明確有條理。在項(xiàng)目文件的預(yù)設(shè)目錄下,共創(chuàng)建了8個(gè)文件夾,分別存放動(dòng)畫文件、材質(zhì)文件、模型文件、Prefab文件、場景文件、代碼文件、音效文件和紋理文件.11.4.2碰撞檢測問題Unity3D中實(shí)現(xiàn)碰撞檢測的方式有兩種:碰撞器和觸發(fā)器。碰撞器有很多的種類,如盒子碰撞器、球形碰撞器、膠囊碰撞器等,要使用這些碰撞器都必須把該碰撞器組件添加到一個(gè)游戲?qū)ο笊厦?。如果在檢視面板中勾選了IsTrigger,那么就成了觸發(fā)器。下面介紹MonoBehaviour類里面兩個(gè)函數(shù):1、MonoBehaviour.OnTriggerEnter(Collidercollider)進(jìn)入觸發(fā)器。2、MonoBehaviour.OnCollisionEnter(Collisioncollision)進(jìn)入碰撞器。本游戲項(xiàng)目所涉及到的碰撞檢測都是進(jìn)入時(shí)的檢測,即剛發(fā)生碰撞,沒有退出和逗留時(shí)的碰撞檢測,所以另外四個(gè)接口函數(shù)就不在贅述,添加碰撞檢測組件碰撞檢測器。添加方法:Component->Physics->Collider;Component->Physics->Rigidbody;IsTrigger屬性在勾選狀態(tài)下,那么該對象就是觸發(fā)器。下面其它參數(shù)則是設(shè)置碰撞體的大小、半徑。Mass是質(zhì)量,Drag是阻力,AngularDrag是角阻力。UseGravity是否使用重力,如果勾選物體將相對向下做自由落體運(yùn)動(dòng)。IsKinematic是否相對地面靜止,如果勾選物體將相對地面靜止。Constraints屬性塊是設(shè)置物體的位置和旋轉(zhuǎn)是否靜止,例如勾選了FreezePositionZ那么物體在Z軸方向不能移動(dòng),用腳本也不能讓它移動(dòng);這是很必要的,比如你做的是一個(gè)2D游戲,自然不希望它在Z軸發(fā)生移動(dòng)而影響碰撞檢測。11.4.3粒子系統(tǒng)Unity3D自帶的粒子系統(tǒng)完全足以滿足開發(fā)者各種這方面的需求,比如在制作煙霧、云雨、爆炸、火焰、天氣等。在創(chuàng)建好游戲?qū)ο蟛⑻砑恿W酉到y(tǒng)組件之后,正如你所見的,會(huì)出現(xiàn)很多屬性。參數(shù)設(shè)置在運(yùn)行后出現(xiàn)的效果是一個(gè)下雪的效果。具體各個(gè)參數(shù)的意思,在這就不贅述了,舉幾個(gè)常用的參數(shù)。Looping是否循環(huán),比如此下雪的粒子效果,當(dāng)然要他循環(huán),再如爆炸之類的就不需要循環(huán)。StartSpeed初始速度,可以設(shè)置一個(gè)參數(shù),也可以設(shè)置兩個(gè),即在這兩個(gè)參數(shù)之間隨機(jī)產(chǎn)生一個(gè)參數(shù),這個(gè)比較常用,StartScale用法與StartSpeed類似11.4.4函數(shù)不管用什么編程語言,創(chuàng)建的腳本都必須繼承MonoBehaviour類,他包括了許許多多的函數(shù),諸如上述的碰撞檢測函數(shù)。如果在檢視器里面修改了腳本文件的名稱,一定要記得在編譯器里面修改類名,不然就會(huì)出現(xiàn)異常的錯(cuò)誤。這里介紹幾個(gè)常用的函數(shù)。MonoBehaviour.OnGUI()接口有許多的屬性,如GUI.Label用于繪制列表,它有6個(gè)接口:像游戲分?jǐn)?shù)統(tǒng)計(jì)等,又如GUI.TextArea用于繪制文本區(qū)域,它有4個(gè)借口,這里不再贅述。最常用的是GUI.Button,設(shè)置各種按鈕。所有的GUI屬性都可以在檢視器里面創(chuàng)建一個(gè)GUISkin,來設(shè)置個(gè)性化的按鈕、圖片背景等。其中mySkin用來接收在檢視器窗口創(chuàng)建的GUISkin游戲?qū)ο?,在游戲?qū)ο罄锩婺憧梢灾付▊€(gè)性化的按鈕圖片,可以是兩張,一張是正常情況下的大小,指定在CustomStyles的Normal和OnNormal屬性上面,一張是鼠標(biāo)移動(dòng)上去的大小,指定在CustomStyles的Hover和OnHover屬性上面,這樣就會(huì)達(dá)到鼠標(biāo)移動(dòng)上去按鈕變大的效果。2、MonoBehaviour.Start和MonoBehaviour.Update函數(shù)。MonoBehaviour.Start函數(shù)就是對游戲的一些預(yù)設(shè),并且在游戲執(zhí)行的整個(gè)周期中,此函數(shù)只調(diào)用一次。比如隱藏光標(biāo):voidStart(){Screen.showCursor=false;//隱藏光標(biāo)Screen.showCursor=true;//顯示光標(biāo)}通過這樣的設(shè)置,我們就可以編寫響應(yīng)的代碼來實(shí)現(xiàn)個(gè)性化的光標(biāo)了。MonoBehaviour.Update函數(shù)功能就是在執(zhí)行完MonoBehaviour.Start函數(shù)之后,游戲的每一幀都會(huì)執(zhí)行該函數(shù),來繪制每幀的畫面,這是非常重要的,否則游戲?qū)o法運(yùn)行。精靈動(dòng)畫的函數(shù)就必須放在這里面。11.5JavaScript語言Javascript是一種由Netscape的LiveScript發(fā)展而來的原型化繼承的面向?qū)ο蟮膭?dòng)態(tài)類型的區(qū)分大小寫的客戶端腳本語言,主要目的是為了解決服務(wù)器端語言,比如Perl,遺留的速度問題,為客戶提供更流暢的瀏覽效果。當(dāng)時(shí)服務(wù)端需要對數(shù)據(jù)進(jìn)行驗(yàn)證,由于網(wǎng)絡(luò)速度相當(dāng)緩慢,只有28.8kbps,驗(yàn)證步驟浪費(fèi)的時(shí)間太多。于是Netscape的瀏覽器Navigator加入了Javascript,提供了數(shù)據(jù)驗(yàn)證的基本功能。JavaScript是一種基于對象和事件驅(qū)動(dòng)并具有相對安全性的客戶端腳本語言。同時(shí)也是一種廣泛用于客戶端Web開發(fā)的腳本語言,常用來給HTML網(wǎng)頁添加動(dòng)態(tài)功能,比如響應(yīng)用戶的各種操作。它最初由網(wǎng)景公司的BrendanEich設(shè)計(jì),是一種動(dòng)態(tài)、弱類型、基于原型的語言,內(nèi)置支持類。JavaScript是Sun公司的注冊商標(biāo)。Ecma國際以JavaScript為基礎(chǔ)制定了ECMAScript標(biāo)準(zhǔn)。JavaScript也可以用于其他場合,如服務(wù)器端編程。完整的JavaScript實(shí)現(xiàn)包含三個(gè)部分:ECMAScript,文檔對象模型,字節(jié)順序記號。Netscape公司在最初將其腳本語言命名為LiveScript來Netscape在與Sun合作之后將其改名為JavaScript。JavaScript最初受Java啟發(fā)而開始設(shè)計(jì)的,目的之一就是“看上去像Java”,因此語法上有類似之處,一些名稱和命名規(guī)范也借自Java。但JavaScript的主要設(shè)計(jì)原則源自Self和Scheme。JavaScript與Java名稱上的近似,是當(dāng)時(shí)網(wǎng)景為了營銷考慮與Sun公司達(dá)成協(xié)議的結(jié)果。為了取得技術(shù)優(yōu)勢,微軟推出了JScript來迎戰(zhàn)JavaScript的腳本語言。為了互用性,Ecma國際(前身為歐洲計(jì)算機(jī)制造商協(xié)會(huì))創(chuàng)建了ECMA-262(ECMAScript)。現(xiàn)在兩者都屬于ECMAScript的實(shí)現(xiàn)。盡管JavaScript作為給非程序人員的腳本語言,而非作為給程序人員的編程語言來推廣和宣傳,但是JavaScript具有非常豐富的特性。12創(chuàng)建環(huán)境:導(dǎo)入基本的定制資源12.1先設(shè)計(jì),后創(chuàng)建在開始創(chuàng)建環(huán)境之前,先在紙上或是使用圖元對象在引擎中為此建立一個(gè)模型,這叫做灰盒法。當(dāng)在繪制地圖時(shí),首先為各種需要?jiǎng)?chuàng)建的物品做標(biāo)注,即創(chuàng)建自己的資源列表。在開始時(shí)就創(chuàng)建一個(gè)這樣的資源列表,這可以確保不會(huì)在稍后的開發(fā)中遺忘任何東西。在Assets文件夾中加入下列文件夾:Audio(音頻)Charactrers(角色)GUI(圖形用戶界面)Editor(編輯器)Particles(粒子)Props(道具)Scenes(場景(Scrips(腳本)Skybox(天空盒)Terrain(地形)12.2導(dǎo)入貼圖打開Unity并創(chuàng)建一個(gè)新的場景文件。將貼圖資源文件拖曳到項(xiàng)目中的Assets文件夾里。12.2.1制作游戲的地圖在新場景里,創(chuàng)建一個(gè)有向光源并且對其進(jìn)行旋轉(zhuǎn),以使得它不是直接指向下方。在Project視圖中展開StandardAssets文件夾,并且打開Prefabs文件夾。把FirstPersonController預(yù)制模型拖曳到Scene視圖或是Hierarchy視圖中。在Hierarchy視圖中選擇默認(rèn)的MainCamera,然后按Delete鍵以將其刪除。這個(gè)控制器預(yù)制模型帶有一個(gè)附加的游戲攝像機(jī)。創(chuàng)建一個(gè)新地形,并且把它的分辨率設(shè)置為200米長、200米寬。重命名地形。使用Inspector視圖中的Terrain工具加入一張地表貼圖。將X和Y平鋪大小修改為200*200,也就是這個(gè)地形的分辨率。為地形繪制高度。把可玩區(qū)域變得大約兩米高—這樣就可以在一個(gè)略低的高度建立道路和河流。使用TargetHeight工具來繪制平緩過渡的高原,并且使用一個(gè)不透明度比較低的選項(xiàng)來漸漸地建立區(qū)域。12.3導(dǎo)入基本網(wǎng)格Unity內(nèi)置地支持Maya、Cinema4D、3dxMax、Cheetah3D和Blender的場景文件,將這些文件保存到Asserts文件夾中。在地形上四處放置一些樹木以及其它對象。單擊Apply按鈕來完成對該資源進(jìn)行的任何改變,并讓Unity重新導(dǎo)入它。當(dāng)導(dǎo)入一個(gè)網(wǎng)格時(shí),Unity會(huì)試圖隨之導(dǎo)入所有的貼圖和材質(zhì),這可以避免在導(dǎo)入之后還需要重新對此進(jìn)行設(shè)置。12.4設(shè)置簡單的著色器和材質(zhì)12.4.1Unity提供的著色器Unity帶有一個(gè)很大的、預(yù)先創(chuàng)建的著色器庫,絕大部分著色器都按照種類來劃分:Normal(普通)、Transparent(透明)、Nature(自然)、Self-ILLuminated(自發(fā)光)、Reflective(反射)以及Lightmapped(光照圖)。12.4.2凹凸貼圖、高光貼圖、立方環(huán)境貼圖和細(xì)節(jié)貼圖凹凸貼圖凹凸貼圖是用來定義對象高度或深度的灰度圖像。該貼圖上比較暗的區(qū)域看上去好像縮在對象里面,貼圖上較亮的區(qū)域標(biāo)記了該對象應(yīng)該抬高或是突出的部位。在導(dǎo)入一張將要用作凹凸貼圖的貼圖時(shí),在導(dǎo)入設(shè)置上選擇GenerateBumMap(生成凹凸貼圖)復(fù)選框?qū)嶋H上會(huì)讓Unity為貼圖創(chuàng)建一張法線貼圖。法線貼圖是使用RGB而不是灰度來編碼的圖像,它使用顏色數(shù)據(jù)來定義對象上的凹凸和褶皺。根據(jù)創(chuàng)建法線貼圖的方法,它們通??梢允沟媒Y(jié)果比使用普通的灰度凹凸貼圖更好看。在生成一張法線貼圖時(shí),嘗試改變凹凸度滑塊來增加其效果。高光和發(fā)光貼圖高光貼圖定義了對象上哪些部分是有光澤的而哪些部分不是。高光信息通常作為灰度圖像保存在貼圖的alpha通道里,而不是像凹凸貼圖一樣是一張獨(dú)立的貼圖。立方環(huán)境貼圖立方環(huán)境貼圖是另一種特殊類型的貼圖,事實(shí)上它是由6張獨(dú)立的貼圖組成的,它們分別和一個(gè)虛擬立方體的6個(gè)面相對應(yīng)。天空盒就是一種特殊的立方環(huán)境貼圖。細(xì)節(jié)貼圖細(xì)節(jié)貼圖是另一種特殊貼圖,它們僅僅由DiffuseDetail(散射細(xì)節(jié))著色器所使用。細(xì)節(jié)貼圖就好像是一張反轉(zhuǎn)的mipmap,因?yàn)楫?dāng)你靠近一個(gè)對象時(shí),這個(gè)特別的著色器才會(huì)開始作用。細(xì)節(jié)貼圖通常是灰度的,并且必須是在各個(gè)方向都完全是平鋪的,否則會(huì)看到縫隙。12.4.3指定著色器和材質(zhì)關(guān)閉Shadertest項(xiàng)目,并且重新打開該項(xiàng)目。在Protect視圖中右擊并選擇Create—Material。這會(huì)在項(xiàng)目層次中的當(dāng)前文件夾中放置一個(gè)新的材質(zhì)對象。默認(rèn)情況下,新材質(zhì)是空的并且賦予了基本的散射著色器。此時(shí),為這種材質(zhì)選擇一種顏色。將tree2游戲?qū)ο髲腜rotect視圖中拖曳到Scene試圖中,以將它加入到游戲中。這會(huì)創(chuàng)建該對象的一個(gè)實(shí)例。單擊并把新材質(zhì)從Project視圖拖曳到tree2的兩個(gè)部分上:樹葉和樹干。在Scene視圖中,查看樹以看看新材質(zhì)的效果12.4.4創(chuàng)建一種定制的天空盒材質(zhì)StandardAssets包中的天空盒和游戲的藝術(shù)方向不符合,因此需要?jiǎng)?chuàng)建一種定制的天空盒。天空盒需要使用6張獨(dú)立的貼圖來創(chuàng)建,每張貼圖都對應(yīng)于立方體6個(gè)面中的一個(gè)。這個(gè)虛擬的立方體會(huì)在游戲場景的周圍和后面渲染,這可以造成在遠(yuǎn)處有一片很大的天空的假象。創(chuàng)建6張無縫的、相互連接的貼圖,并且讓Unity生成一張立方環(huán)境貼圖。12.4.5添加水體這幅地圖的場景中最后需要添加的一個(gè)重要部分就是水體。創(chuàng)建一個(gè)新的游戲?qū)ο髉lane,并且把它放置在(100,0.2,100),使得它位于地圖的中心并且略高于地面。在每條軸上把它放大21倍,使得它可以覆蓋整張地圖創(chuàng)建一種新材質(zhì),把它命名為Water,并且在Shader下拉菜單中選擇Water,為其指定Water著色器。把這種新材質(zhì)放在Material文件夾中,并且把它賦給Plane對象。將WaterSimple腳本拖曳到Plane對象上。將水面貼圖放到WavesBumpmap和WaveSpeed貼圖框中。在Project視圖中選擇Water-DIFF貼圖,并把其GenerateCumbmap的導(dǎo)入選項(xiàng)修改為Spheremap(球體貼圖)。單擊Apply按鈕使得Unity重新導(dǎo)入這張貼圖,并為其創(chuàng)建立方環(huán)境貼圖。把這張新建的立方環(huán)境貼圖應(yīng)用到水體的反射顏色貼圖上,對Horizon和Wavescale滑塊進(jìn)行修改,得到想要的效果。13創(chuàng)建角色13.1導(dǎo)入角色以及其它非靜態(tài)網(wǎng)格該游戲的角色身體分為兩個(gè)帶有蒙皮的部分,分別名為“Body”和“Wheels”。該動(dòng)畫剪輯使用一個(gè)獨(dú)立的屬性來顯示其采用率,以及該文件是不是已經(jīng)壓縮了。這些帶有蒙皮的網(wǎng)格部分,顯示了為它們每一部分所創(chuàng)建的默認(rèn)材質(zhì)以及該部分的帶有貼圖的預(yù)覽。如果只是單擊Mesh部分,該部分會(huì)只使用線框來顯示。選擇“Widget”層次的根部,以在Inspector視圖中顯示其所有導(dǎo)入屬性。啟用GenerateColliders功能,并讓Unity為每張貼圖生成一種材質(zhì)。隨后選擇Animations子菜單。在SplitAnimations表中,選擇”+”號來創(chuàng)建一段新的剪輯。默認(rèn)情況下,Unity會(huì)使用一個(gè)名為“idle”的示例剪輯以及一些隨機(jī)的數(shù)字來填充這些字段。單擊Apply按鈕保存。新創(chuàng)建的剪輯會(huì)加入到Project視圖的層次中。從Project視圖中把該項(xiàng)目的動(dòng)畫剪輯中的某一段拖曳到Animation域中。在Scene視圖中把視野居中,然后按下“播放”按鈕來觀看動(dòng)畫?,F(xiàn)在角色已經(jīng)就緒了,可以將其導(dǎo)入到游戲中的任何場景文件中。14編寫角色和狀態(tài)控制腳本14.1計(jì)劃和設(shè)計(jì)該角色的控制器需要能夠以某種方式處理下列基本功能:WASD鍵移動(dòng)控制。角色必須隨著D鍵和A鍵旋轉(zhuǎn)并且隨著W鍵和S鍵向前或向后移動(dòng)。Widget需要能夠跳躍、滾動(dòng)(消耗能量的高速滾動(dòng))和匍匐。在匍匐時(shí),其物理碰撞體應(yīng)該變小??刂破鞅仨殲槠湟苿?dòng)和旋轉(zhuǎn)速度提供可編輯的變量,并且需要提供一些變量來記它是否是可控制的(如果它在冒險(xiǎn)中死了,在其被屠殺的過程中,玩家不應(yīng)該還能控制它)。腳本還需要在接受移動(dòng)輸入時(shí)確保角色在地面上,這樣它就不會(huì)意外地懸浮或是飛行—這個(gè)機(jī)器人絕對是只能在地面上移動(dòng)的。把一些攝像機(jī)設(shè)置成能夠平滑的跟隨角色。14.2一個(gè)簡單的第三人稱控制器要讓角色移動(dòng),需要把前面這個(gè)列表轉(zhuǎn)化為可用的代碼。在Assets文件夾中的Scripts目錄中創(chuàng)建一個(gè)新的JavaScript文件,并把它命名為WidgetController。14.2.1控制器變量定義已經(jīng)知道會(huì)在腳本文件中需要的變量,并為它們賦一些基本的值。在選擇的編輯器中打開角色的控制器,加入成員變量,例如rollSpeed、fastRollSpeed、jumpSpeed、gravity、rotateSpeed、duckSpeed等。這些定義為成員便利變量,并且可以在Inspector視圖中編輯。這些變量可以控制角色在其任何一個(gè)動(dòng)作中多快地移動(dòng)。需要角色的重力(gravity)變量,在每一幀中它作用于角色之上,以使得它會(huì)在地面上,將其值設(shè)置為20。其他的變量控制角色可以多快地在游戲世界中進(jìn)行滾動(dòng)、移動(dòng)以及旋轉(zhuǎn)。也需要一些私有變量來記錄角色的當(dāng)前移動(dòng)方向、它是否在地面上以及它在匍匐時(shí)的當(dāng)前高度。將下面這些變量聲明為private類型。moveDirection、grounded、moveHorz、normalHeight、duckHeight、rotateDirection。旋轉(zhuǎn)和移動(dòng)方向定義為一個(gè)3D變量,這使得可以在需要的時(shí)候同時(shí)在三個(gè)平面上對移動(dòng)進(jìn)行計(jì)算。MoveHorz變量決定了玩家在旋轉(zhuǎn)中的方向,grounded布爾值保存了角色當(dāng)前是否在地面上。14.2.2FixedUpdate:讓角色移動(dòng)第三人稱控制器腳本會(huì)遵循以下的基本邏輯:如果這個(gè)角色是可控制的,允許玩家的移動(dòng)輸入。如果這個(gè)角色在地面上,允許玩家在地面上常規(guī)的移動(dòng)輸入獲取玩家的輸入并且對其進(jìn)行變換,使得它適用于世界坐標(biāo)系把任何特殊的玩家控制應(yīng)用到移動(dòng)上,例如,跳躍、匍匐或者加速。施加游戲世界重力的影響,使得角色可以自然地下落和跳躍。這里介紹一下Unity腳本編程中的一個(gè)重要的類—time。time類允許訪問一些很有用的只讀數(shù)據(jù),例如,這個(gè)游戲運(yùn)行了多久了或是當(dāng)前關(guān)卡載入多久了。DeltaTime是另一個(gè)只讀數(shù)據(jù),它描述了完成上一幀所花的時(shí)間,其單位為秒。通常把重力常量乘以完成幀所花費(fèi)的時(shí)間,實(shí)際上就計(jì)算了每秒重力對角色的影響。在任何時(shí)候,如果想要每秒都做些什么,把它乘以Time.deltaTime。14.3設(shè)置Unity的輸入管理器要在Unity中設(shè)置定制的控制方式,只需要單擊幾次按鈕就可以很方便地在編輯器內(nèi)部完成了。Unity支持從鍵盤、鼠標(biāo)、游戲手柄和搖桿的輸入,并且可以在一個(gè)游戲中把任意多個(gè)這樣的輸入設(shè)備混合起來,這使得玩家可以選用自己喜歡的控制方式。每個(gè)新項(xiàng)目默認(rèn)可以定義17個(gè)輸入軸(inputaxis),包含了標(biāo)準(zhǔn)的鍵盤和鼠標(biāo)控制。一條軸就是任何預(yù)先定義的移動(dòng)或是按下按鈕動(dòng)作,例如,Jump(跳躍)、Run(奔跑)、Strafe(掃射)或是LeftMouseClick(左擊)。設(shè)置輸入管理器的步驟如下:把Size字段修改為6,以刪除不需要的軸。角色的控制非常簡單,不需要默認(rèn)的選項(xiàng)。保持Horizontal和Vertical不變—這兩條軸已經(jīng)映射為同時(shí)使用WASD鍵和方向鍵。展開Fire1并把它重命名為Attack。保持默認(rèn)賦值的左Ctrl和mouse0,。把Fire2軸、Fire3軸分別重命名為Boost和Duck。讓Boost使用左Shift鍵,Duck使用CapsLock鍵。保持Jump軸不變。14.4連接攝像機(jī)現(xiàn)在角色的功能已經(jīng)完整并且可以控制了,還需要某些方法來保持?jǐn)z像機(jī)總是跟隨者它,否則玩家會(huì)很容易就跑出攝像機(jī)的視野。要做到這點(diǎn),需要?jiǎng)?chuàng)建一個(gè)平滑跟隨腳本,以控制攝像機(jī)的移動(dòng)和旋轉(zhuǎn)。希望定制攝像機(jī)可以做如下一些基本的事情:總是以一個(gè)預(yù)先設(shè)置的、特定的距離跟隨角色。在跟隨速度上有一個(gè)小小的延遲,這樣攝像機(jī)的移動(dòng)就不會(huì)抖動(dòng)—想要讓它可以隨著玩家四處移動(dòng)而平緩地改變方向和更新設(shè)置??偸菚?huì)更新其當(dāng)前的旋轉(zhuǎn)角度,以便它查看角色。否則一個(gè)跳躍動(dòng)作就會(huì)讓角色飛出視野。在Scripts文件夾中創(chuàng)建一個(gè)新的JavaScript文件,并把它命名為Widget-Camera。在該腳本中實(shí)現(xiàn)連接攝像機(jī)的功能。14.5裝配狀態(tài)控制器現(xiàn)在,角色已經(jīng)可以移動(dòng)了,它需要能夠保存自己的狀態(tài)和重要數(shù)據(jù),從而在遇到諸如物品和敵人之類的東西是可以進(jìn)行更新。它需要:用來記錄生命(如能量、最大生命、和最大能量)的變量,以及其他變量來確定需要多少能量才能進(jìn)行加速旋轉(zhuǎn)。在某個(gè)時(shí)刻,它需要表示受到攻擊以及瀕死的音頻變量。用來添加生命和能量以及進(jìn)行傷害并減少生命的函數(shù)。某些種類的死亡函數(shù),以便處理不幸發(fā)生的提前結(jié)束及其在游戲中的重生。在Scripts文件夾中創(chuàng)建一個(gè)新的JavaSc文件,并把它命名為Widget-Status,實(shí)現(xiàn)上述功能。15連接動(dòng)畫15.1Unity中的動(dòng)畫在Unity中,可以用幾種不同的方式來處理動(dòng)畫:可以在其他編輯器中創(chuàng)建它們并且導(dǎo)入,可以使用腳本來進(jìn)行程序化地生成,也可以直接在Unity的Animation視圖中創(chuàng)建。這些方法中的每一種都有其優(yōu)缺點(diǎn),相對于其他方法來說,某種方法可能會(huì)給一些特定的任務(wù)帶來更多的好處。一個(gè)復(fù)雜的、具有多個(gè)部分的角色可以在Animation視圖中進(jìn)行動(dòng)畫,但是制作角色的美工可能會(huì)法線諸如Maya這樣的獨(dú)立編輯器更好用。一段拾取生命或是彈藥的動(dòng)畫可以在外部軟件中進(jìn)行,但是使用簡單的腳本來創(chuàng)建某些簡單的動(dòng)畫效果會(huì)更為有效。另一方面,如果無法使用第三方動(dòng)畫編輯器,可以在Unity中處理需要的任何操作。15.2動(dòng)畫API關(guān)于這個(gè)API需要掌握的最關(guān)鍵的方面之一,就是動(dòng)畫圖層的概念。在Unity中,一個(gè)給定游戲?qū)ο笊系乃锌梢允褂玫膭?dòng)畫剪輯,都會(huì)被賦予一個(gè)圖層,默認(rèn)為0.根據(jù)圖層的索引,一段剪輯在被賦予混合權(quán)重時(shí),會(huì)得到一個(gè)更高的優(yōu)先級。一個(gè)較高圖層中的動(dòng)畫在需要獲得優(yōu)先級時(shí)可以很方便地覆蓋一個(gè)較低圖層中的動(dòng)畫。15.3創(chuàng)建動(dòng)畫狀態(tài)管理器在Scripts目錄中,創(chuàng)建一個(gè)新的JavaScript文件,并把它命名為Wdiget-Animation。在該腳本中實(shí)現(xiàn)動(dòng)畫管理的功能。16使用觸發(fā)器并創(chuàng)建環(huán)境交互16.1觸發(fā)器和碰撞在游戲中,一個(gè)觸發(fā)器基本上就是任何可以激活和絆倒的東西,它會(huì)因此發(fā)送某種形式的消息或是開始一個(gè)時(shí)間。觸發(fā)器通常是包含一個(gè)給定空間的不可見區(qū)域或是形體,一旦玩家進(jìn)入這個(gè)區(qū)域或是在這個(gè)區(qū)域里進(jìn)行特定的動(dòng)作(例如,按下一個(gè)按鈕),就會(huì)觸發(fā)觸發(fā)器。很多和玩家相關(guān)的行動(dòng)(例如,打開某個(gè)東西,如門和箱子,啟動(dòng)電梯或是拾取一個(gè)掉下的物品)能夠工作,是因?yàn)橛|發(fā)器和它們的形體。所有的游戲引擎對觸發(fā)器和觸發(fā)器形體的定義都是不同的,Unity也不例外。在Unity中,觸發(fā)器和GameObject直接相連—這兩者不能離開另一個(gè)而獨(dú)自存在。每當(dāng)玩家和GO的碰撞形體發(fā)生碰撞,觸發(fā)器都會(huì)通過腳本來激活。GameObject自身可以是不可見的,并且定義了一個(gè)松散的區(qū)域,它也可以描述玩家可以看到的一個(gè)有形物體,例如一扇門。16.2設(shè)置一個(gè)簡單的觸發(fā)器對象1、導(dǎo)入貼圖,使用一種名為generic-pickups的新材質(zhì)對其進(jìn)行設(shè)置,并給它一個(gè)lightedoutlineToonshader。2、為這個(gè)對象創(chuàng)建一個(gè)預(yù)制模型并且把它命名為Pickup-Gear。把這個(gè)物品放在最后的場景文件中。3、在Project視圖中選中這個(gè)齒輪,并選擇SphereCollider,為這個(gè)物品賦予一個(gè)新的Sphere碰撞體。4、在SphereCollider組件的Radius設(shè)置上面,單擊IsTrigger框把它設(shè)置為True。創(chuàng)建一個(gè)新的JavaScript腳本,并把它命名為PickupItems。把它放在Scrips目錄中。這個(gè)腳本是一個(gè)通用的腳本,用來處理游戲中所有可能的可拾取的物品。16.2.1背囊管理在拾取已經(jīng)完成并且正確工作后,需要?jiǎng)?chuàng)建一個(gè)背囊管理器使得角色可以真正地保存其新找到的獎(jiǎng)品。需要某種類型的對象或是數(shù)組,來保存可以獲得的物品并且記錄真正被角色搜集到的物品,在Scripts目錄中創(chuàng)建一個(gè)新的JavaScript文件,并把它命名為Widget-Inventory,這個(gè)腳本用來實(shí)現(xiàn)上述功能。17創(chuàng)建探險(xiǎn)和AI17.1設(shè)置一個(gè)簡單的敵人角色第一次遭遇的敵人是一只簡單的機(jī)器兔子,它是在山地中土生土長的。這個(gè)敵人的AI可以讓玩家在沒有生命危險(xiǎn)的情況下就能熟練地控制。在開始編寫腳本之前,需要在Unity中設(shè)置好游戲資源并且讓一切就緒。打開保存的項(xiàng)目并且創(chuàng)建一個(gè)新的場景。下面是實(shí)現(xiàn)的步驟:在項(xiàng)目中創(chuàng)建一個(gè)新場景,并且把一個(gè)基本的平面游戲?qū)ο蠓胖迷谟螒蚴澜缰?。改變其大小使得它提供足夠的空間以四處奔跑。導(dǎo)入兔子游戲?qū)ο?,命名為E-Bunny。把E-Bunny對象的Scale參數(shù)設(shè)置為1。為這個(gè)兔子角色創(chuàng)建一個(gè)新的預(yù)制模型并且用E-Bunny對象來填充它。使用Toon著色器來設(shè)置所提供的材質(zhì),并且把所提供的貼圖賦值給它。為這個(gè)小兔子預(yù)制模型加入一個(gè)Animation組件,并且在Inspector視圖中把這個(gè)動(dòng)畫數(shù)組的大小改為3.因?yàn)檫@個(gè)小兔子需要和世界進(jìn)行交互并且在世界中四處移動(dòng),所以它還需要一個(gè)角色控制器。使用Component—Physics菜單來加入這個(gè)組件,并且把碰撞體的height和radius改為0.65,把center改為(0,0.52,0)。17.1.1AI控制器現(xiàn)在,新的敵人角色已經(jīng)設(shè)置完成并且一切就緒了,需要為它定義所希望的表現(xiàn)。用一句話來說,你想要這個(gè)小兔子自由地四處游蕩,直到它看到一個(gè)玩家去追捕它。在一個(gè)小范圍內(nèi)緩慢而隨機(jī)地移動(dòng)。如果角色在某個(gè)設(shè)定的區(qū)域范圍內(nèi),專項(xiàng)并向其移動(dòng)。如果和角色發(fā)生碰撞,就攻擊。短暫地停頓一下以讓玩家進(jìn)行反擊。如果角色還在范圍內(nèi)并且可以看到的話,再次向它移動(dòng)。否則,視圖找到它。如果角色移動(dòng)到范圍以外,繼續(xù)游蕩。如果被打敗,丟下一個(gè)隨機(jī)的小物品并且消失。在Scripts目錄中創(chuàng)建一個(gè)名為Ebunny-AIController的腳本文件,實(shí)現(xiàn)兔子角色的人工智能。17.1.2為一只簡單的小兔子編寫簡單的狀態(tài)控制管理器和角色不同,小兔子并不需要記錄很多東西—它只需要記錄生命值。在Scripts目錄中創(chuàng)建一個(gè)名為EBunny-Status的腳本文件,實(shí)現(xiàn)上述功能。17.2產(chǎn)生和優(yōu)化在小兔子敵人上加入另一個(gè)功能,這也可以減少一些內(nèi)存空間的占用以更好地優(yōu)化游戲?,F(xiàn)在,在玩家殺死測試的小兔子之后,它放下它的獎(jiǎng)勵(lì)并且消失。然后,通過加入一個(gè)產(chǎn)生點(diǎn),可以讓新的小兔子出現(xiàn)并且可以讓角色面對更多的對手。同時(shí),通過使用產(chǎn)生點(diǎn),可以在角色離開他們的雷達(dá)時(shí)刪除這些敵人,以節(jié)約不需要的空間。在Scripts目錄中創(chuàng)建名為Enemy-RespawnPoint。完成上述功能。18創(chuàng)建光影18.1燈光的類型Unity預(yù)制了三種類型的光源,每種類型都模擬現(xiàn)實(shí)世界中的一種常見光源—有向、點(diǎn)和聚光燈。有向光源的功能和太陽類似:它們模擬一個(gè)大的、遠(yuǎn)的光源,指向一個(gè)方向。在場景中所有的東西都會(huì)被這個(gè)光源以相同的方式照亮,任何投影投射也會(huì)使用相同的方向。把有向光源組合起來可以迅速地照亮整個(gè)場景,但是它們也可以讓一些細(xì)節(jié)消失或是把一些希望保持不可見的區(qū)域照亮。點(diǎn)光源的作用和一個(gè)常見的燈泡一樣—它們從一個(gè)中心點(diǎn)向外、在一個(gè)球體中發(fā)光。這個(gè)光源可以自然地漸漸變暗,也可以停止在一條線上。聚光燈光源的功能就像其名稱所顯示的那樣。光源從一個(gè)確定的點(diǎn)沿著一個(gè)方向向外照射,其形狀就像一個(gè)圓錐。這種光源也可以自然地漸漸變暗,聚光燈的椎體角度也可以改變。18.2照亮游戲世界18.2.1光照貼圖Unity擁有完整的集成光照烘培貼圖工具,即IlluminateLabs的Beast,這意味著Beast可根據(jù)場景在Unity中的設(shè)置并考慮到網(wǎng)格、材質(zhì)、紋理和燈光,烘培場景中的光照貼圖。也意味著光照貼圖是渲染引擎中不可缺少的一部分。創(chuàng)建光照貼圖后無需進(jìn)行任何操作,就會(huì)被對象自動(dòng)應(yīng)用。18.2.2準(zhǔn)備場景并烘焙光照貼圖從菜單中選擇窗口(Window)—光照貼圖(Lightmapping),打開光照貼圖(Lightmapping)窗口:確保想要進(jìn)行光照映射的任何網(wǎng)格都有適當(dāng)?shù)腢V供進(jìn)行光照映射。最簡單的方法是從網(wǎng)格導(dǎo)入設(shè)置(meshimportsettings)中選擇生成光照貼圖UV(GenerateLightmapUVs)選項(xiàng)。2、在對象(Object)窗格中將任何網(wǎng)格渲染器(MeshRenderer)、蒙皮網(wǎng)格渲染器(SkinnedMeshRenderer)或地形(Terrain)
標(biāo)記為靜態(tài)(static),告訴Unity這些對象不會(huì)移動(dòng)或更改,可進(jìn)行光照貼圖。3、要控制光照貼圖的分辨率,請轉(zhuǎn)到烘培
(Bake)
窗格并調(diào)整分辨率(Resolution)值(如要更好地了解如何安排光照貼圖的紋元,請查看場景視圖(SceneView)中的光照貼圖顯示(LightmapDisplay)小窗口,并選擇顯示分辨率(ShowResolution))。4、點(diǎn)擊烘培(Bake)按鈕。5、Unity編輯器(Editor)的狀態(tài)欄上出現(xiàn)一個(gè)進(jìn)度條(右下角)。6、烘培完成時(shí)可在光照貼圖編輯器(LightmapEditor)窗口底部看到所有已烘培的光照貼圖。場景和游戲視圖將更新,場景已完成光照映射。18.2.3調(diào)整烘焙設(shè)置選擇燈光并打開光照貼圖(Lightmapping)窗口中的對象(Object)窗格,出現(xiàn)陰影半徑(ShadowRadius)和陰影樣本(ShadowSamples)屬性。將陰影半徑(ShadowRadius)設(shè)置為1.2,陰影樣本(ShadowSamples)設(shè)置為100,重新烘培產(chǎn)生帶有寬半陰影的軟陰影,圖片看起來效果就好很多。在Unity專業(yè)版中可啟用全局照明(GlobalIllumination)并添加天光(SkyLight),進(jìn)一步處理場景。在烘培(Bake)窗格中將反彈(Bounces)值設(shè)置為1,天光強(qiáng)度(SkyLightIntensity)設(shè)為0.5。結(jié)果使燈光更軟,稍稍帶漫反射相互反射效果(從綠色和藍(lán)色立方體中滲色)。雖然還是3個(gè)立方體和一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年關(guān)于中海油深圳電力有限公司空缺崗位公開招聘的備考題庫及參考答案詳解1套
- 2026年中煤科工集團(tuán)杭州研究院有限公司招聘備考題庫及參考答案詳解一套
- 2026年中國人壽保險(xiǎn)股份有限公司西安分公司招聘備考題庫及一套參考答案詳解
- 2026年興隆縣衛(wèi)生健康局公開選調(diào)全額事業(yè)編制人員的備考題庫及答案詳解參考
- 2026年中國科學(xué)院山西煤炭化學(xué)研究所招聘備考題庫參考答案詳解
- 2026年中國移動(dòng)通信集團(tuán)山東有限公司曲阜分公司招聘備考題庫及參考答案詳解1套
- 2026年關(guān)于為淄博市檢察機(jī)關(guān)公開招聘聘用制書記員的備考題庫及答案詳解1套
- 2026年寧波市海曙區(qū)文化和廣電旅游體育局下屬事業(yè)單位區(qū)文化館編外人員招聘備考題庫含答案詳解
- 2026年建水縣公安局公開招聘警務(wù)輔助人員31人備考題庫及答案詳解一套
- 育兒小知識課件大全
- 2025年電子工程師年度工作總結(jié)
- 2025年高職第三學(xué)年(工程造價(jià))工程結(jié)算與審計(jì)測試題及答案
- 2026年消防設(shè)施操作員之消防設(shè)備基礎(chǔ)知識考試題庫500道及完整答案(各地真題)
- 2026年電信運(yùn)營商物資管理崗位面試題
- 2025年高職會(huì)計(jì)(成本核算)試題及答案
- 人參培訓(xùn)課件
- 旅店突發(fā)事件預(yù)案
- 學(xué)習(xí)方法總結(jié)高效學(xué)習(xí)的技巧與方法
- 健康中國2030規(guī)劃綱要考試題庫含答案全套
- 產(chǎn)房與兒科交接登記表
- 韓國語topik單詞-初級+中級
評論
0/150
提交評論