虛擬現(xiàn)實技術(shù)及其實踐教程55025unity_第1頁
虛擬現(xiàn)實技術(shù)及其實踐教程55025unity_第2頁
虛擬現(xiàn)實技術(shù)及其實踐教程55025unity_第3頁
虛擬現(xiàn)實技術(shù)及其實踐教程55025unity_第4頁
虛擬現(xiàn)實技術(shù)及其實踐教程55025unity_第5頁
已閱讀5頁,還剩112頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

黃靜虛擬現(xiàn)實VirtualRealityUnity游戲引擎

介紹300年后的人類是這樣的,看完目瞪口呆!老板在線5年后三維全息虛擬技術(shù)正式大規(guī)模商用,可以通過VR、AR技術(shù)進行遠程交流、網(wǎng)絡購物了!視頻通話已經(jīng)out了!宅男、宅女們終于可以足不出戶了!未來的辦公室這樣看比賽75年后

虛擬現(xiàn)實技術(shù)為醫(yī)療診斷提供了更好的支持?;蚣夹g(shù)的提升,大大加速了人類進化,人類平均智商提升到150。90年后,人類帶上“大腦帽”可以進入虛擬世界!宜家VR應用上架HTCVive,首家推出虛擬現(xiàn)實購物應用最近IKEA宜家制作的VR應用《IKEAVRExperience》在SteamVR上線,可以在HTCVive中提前體驗宜家家具的效果。用戶可以在應用中用宜家的家具布置一個屬于自己的廚房,試用其中三種裝飾風格,然后置身其中漫步欣賞,并通過點擊更換櫥柜和抽屜的顏色。移動平臺上增強現(xiàn)實技術(shù)的卡通老虎互動項目簡介該系統(tǒng)應用運行在Andriod智能手機上。虛擬場景為一個可愛的小老虎,名字為“Jerry”,當在屏幕上觸摸小老虎,會出現(xiàn)一個列表,列表提供多個動作按鈕,包括閑置動作、撓癢、輕拍、轉(zhuǎn)左、轉(zhuǎn)右,點擊動作,小老虎就能做出相應的動作。視頻演示技術(shù)平臺UnityMetaioAndroidMetaioMetaio是2003年由大眾的一個項目衍生出來的一家虛擬現(xiàn)實初創(chuàng)公司,專門從事增強現(xiàn)實和機器視覺解決方案。2015年5月29日,蘋果已經(jīng)悄悄地收購了Metaio。這家公司的網(wǎng)站稱已經(jīng)停止接受新客戶。MetaioSDKMetaioSDK是一個AR軟件開發(fā)程序包,SDK里面包括了四個單元,影像采集單元(Capturing)、傳感器接口單元(Sensor-interface)、渲染單元(Rendering)、跟蹤單元(Tracking),這四個單元包含了增強現(xiàn)實的所有功能。此外,MetaioSDK為我們提供了一個接口,這個接口把AR應用和4個單元連接起來,用戶可以通過應用程序編程接口(API)實現(xiàn)各種復雜的AR功能,簡化用戶工作難度。MetaioSDK支持當今流行的軟件開發(fā)平臺,包括Andriod、IOS、Unity3D和Windows,在各大平臺上加入MetaioSDK,能夠開發(fā)出更加強大的AR應用。AndroidAndroid(在中國稱“安卓”)是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動設(shè)備,如智能手機和平板電腦,由Google公司和開放手機聯(lián)盟領(lǐng)導及開發(fā)。Android操作系統(tǒng)最初由AndyRubin開發(fā),主要支持手機。2011年第一季度,Android在全球的市場份額首次超過塞班系統(tǒng),躍居全球第一?,F(xiàn)今,Andriod和IOS是最主流的兩個系統(tǒng)。環(huán)境配置1、AndriodSDK的安裝與配置2、MetaioSDK的安裝與配置MetaioSDK的安裝配置非常簡單,通過官網(wǎng)下載自己需要的SDK版本,下載完成后直接解壓就可以了。3、Unity3D的安裝與配置1、AndriodSDK的安裝與配置安裝Java,網(wǎng)上下載JDK,按著步驟一步一步就能安裝成功。安裝完Java后,需要進行環(huán)境配置,首先點擊我的電腦-屬性-高級-環(huán)境變量。下載安裝AndriodSDKJava環(huán)境變量變量名JAVA_HOME,在系統(tǒng)變量新建一個變量,并命名為JAVA_HOME,變量值為你的java安裝的路徑,點擊保存Java環(huán)境變量變量名Path,變量值里添加Java安裝文件夾的bin子文件夾路徑,每個路徑需以分號隔開。AndriodSDK系統(tǒng)變量變量Path,變量值里添加AndriodSDK的安裝文件夾的platform-tools子文件夾路徑。2、MetaioSDK的安裝與配置MetaioSDK的安裝配置比較簡單,通過官網(wǎng)下載自己需要的SDK版本資源包,下載完成后直接解壓,最后導入Unity即可ke。3、Unity的安裝與配置參見前面課件或講義在Unity中添加AndriodSDK的安裝路徑添加AndriodSDK的安裝路徑打開Unity3D,UnityEdit->Preferences...瀏覽AndoidSDK的目錄,添加AndriodSDK的安裝路徑。詳細設(shè)計與實現(xiàn)1、創(chuàng)建一個新的Unity3D工程2、導入metaio資源包metaioSDK.unitypackage3、注冊自己的應用,生成ApplicationSignature(應用簽名代碼)創(chuàng)建主場景,把場景中的MainCamera刪除,把預制件(Prefab)metaioSDK和metaioTracker拖到場景中。增加一個layer,命名為metaioLayer,metaioSDK中的DeviceCamera會自動將Layer設(shè)置為metaioLayer。設(shè)置signature要注冊自己的應用,即ApplicationSignature(應用簽名代碼)。首先需要打開Plugins文件夾中的AndroidManifest.xml,第四行代碼為“package="com.unity3d.unity"”(應用識別名AppIdentifier),將其修改為自己的Identifier,本案例為“com.unity3d.Tiger_Jerry”,修改并保存。登陸metaio的官方網(wǎng)站:/index.php?state=portal(申請前需注冊賬號),輸入AppName和AppIdentifier,點擊RegisteryourApp,系統(tǒng)生成SDKSignature為:“eLuyOeB1qaZpLsEiuvwfTzktloHuBOSAT/6cZRiizqQ=”。SDKSignatures添加Signature到Unity3D復制Signature到預制件metaioSDK的對應參數(shù)添加跟蹤在Assets文件夾上創(chuàng)建一個子文件夾,命名為“StreamingAssets”,把圖像標識和跟蹤配置文件放到該文件夾內(nèi)。跟蹤配置文件使用metaioSDK提供的TrackingData_MultiMarkerless.xml,跟蹤目標的主要參數(shù)為<ReferenceImage>(<參考圖像>),把選擇的圖像標識的名字寫上去,就能使用了。部分TrackingData_MultiMarkerless.xml代碼<SensorCOS> <SensorCosID>Patch1</SensorCosID> <Parameters> <ReferenceImage>target.png</ReferenceImage> <SimilarityThreshold>0.7</SimilarityThreshold> </Parameters></SensorCOS>選取圖像標識metaioSDK為我們提供了默認的圖像,如果默認圖片不能滿足你的需求,還可以自己選取圖像。圖片要求:①有多種不同顏色的,對比度高,銳化的邊緣,metaio認的是灰度圖,不同顏色就有不同的明度。②圖片是正方形或者是3:2或4:3左右的長方形。接近比例即可。③不要細小的文字,扁平單色的陰影④如果圖片中有多個平面陰影,選擇清晰的部分作為掃描目標⑤圖片不能太黑暗,沒有反射高光區(qū)域⑥圖片應大于150px-200px本案例圖像標識圖像標識和跟蹤配置文件都準備好后,在預制件metaioSDK中Selectconfiguration選取選取StreamingAssets,在下個參數(shù)中拉入跟蹤配置文件TrackingData_MultiMarkerless.xml。虛擬場景設(shè)計創(chuàng)建一個老虎3D模型,添加動畫系統(tǒng)(Animation)虛擬場景設(shè)計添加交互控制,當點擊小老虎時,出現(xiàn)一個菜單,點擊動作按鈕,小老虎就能做出相應動作。首先為小老虎加上一個Cube游戲?qū)ο?,去掉MeshRender屬性,取消BoxCollider屬性,然后把Cube移動到小老虎上,放大到與小老虎同等大小,與小老虎完全重合。部分代碼if(GUI.Button(newRect(10,150,380,80),"Idle")){ obj.animation.CrossFade("Idle"); }if(GUI.Button(newRect(10,280,380,80),"Scratch")){ obj.animation.CrossFade("Scratch"); }if(GUI.Button(newRect(10,410,380,80),"Tap")){ obj.animation.CrossFade("Tap"); }if(GUI.Button(newRect(10,540,380,80),"TurnLeft")) obj.animation.CrossFade("Turn_Left");if(GUI.Button(newRect(10,670,380,80),"TurnRight")) obj.animation.CrossFade("Turn_Right");if(GUI.Button(newRect(10,800,380,80),"close")) Window=false;}提示Animation.CrossFade淡入淡出把腳本添加到Cube對象上,當點擊Cube對象時,就能彈出列表,點擊按鈕小老虎就能做出動作。在MainCmera中拖入一個音樂文件做背景音樂。點擊目標點擊前點擊Tap按鈕再創(chuàng)建一個開始場景最后生成應用運行Andriod虛擬機成功后,點擊buildandrun,系統(tǒng)就會生成一個APK,把APK安裝到Andriod智能手機上即可。虛擬場景設(shè)計創(chuàng)建主場景創(chuàng)建一個老虎3D模型,添加動畫系統(tǒng)、碰撞檢測、交互腳本、背景音樂創(chuàng)建開始場景創(chuàng)建簡介場景生成應用6.應用測試通過Andriod智能手機的測試,發(fā)現(xiàn)對于現(xiàn)階段的智能手機都能運行正常。但由于在電腦測試時使用攝像頭與手機攝像頭像素差別較大,因此造成按鈕、文字出現(xiàn)問題,后期修改后順利解決了問題。 基于增強現(xiàn)實技術(shù)

的3D畫冊的研究與實現(xiàn)兒童時期孩子都喜歡到處涂涂畫畫的填色游戲,如果能夠把3D畫冊將傳統(tǒng)著色簿和增強現(xiàn)實加以融合,相比以往涂完作罷的方式,增強現(xiàn)實技術(shù)可以創(chuàng)造性地把兒童隨性完成的涂鴉作品以完整的3D動畫形式活生生地呈現(xiàn)出來,給了孩子的涂鴉作品一個絕佳的展示平臺。在增強現(xiàn)實技術(shù)3D畫冊中,涂鴉底板是實,通過增強現(xiàn)實技術(shù)展示出來的所填色繪制涂鴉底板所代表的物體形象的三維模型、音頻和動畫等內(nèi)容是虛擬對現(xiàn)實的信息擴充和拓展。3D畫冊能給用戶視覺上帶來不一樣的色彩震撼力,賦予畫冊產(chǎn)品生命力,對兒童涂鴉學習起到極其關(guān)鍵的作用。選題依據(jù)項目模塊相關(guān)技術(shù)-高通(Qualcomm)技術(shù)高通發(fā)布的增強現(xiàn)實插件,增強現(xiàn)實軟件開發(fā)工具包(VuforiaAugmentedRealitySDK),是主要用于智能終端擴充現(xiàn)實研發(fā)工具庫。高通增強現(xiàn)實軟件開發(fā)工具包,是為Unity3D量身打造的,不同于簡單比對像素相似度,或者一些單純的特征規(guī)則,其主要運用計算機視覺相關(guān)技術(shù)及時辨別與獲取二維對象圖像或簡單的空間對象,并讓研發(fā)團隊利用攝像頭將虛擬對象置于特定位置,而且可以調(diào)節(jié)對象在攝像機視野里真實場景中的方位。同時它支持Android和iOS,能夠支持Unity3D下增強現(xiàn)實應用提供程序的開發(fā)設(shè)計,實現(xiàn)應用程序向移動端的移植,拓展增強現(xiàn)實應用的硬件應用限制和適用范圍。三維注冊技術(shù)三維注冊算法實時判斷跟蹤攝像機在真實環(huán)境中的方位,依據(jù)攝像機獲取到的圖像信息來確定虛擬3D模型映射在現(xiàn)實環(huán)境中放置的方位,最后通過運用顯示技術(shù),將其實時地呈現(xiàn)出來的技術(shù)。相關(guān)技術(shù)

基于標志物的跟蹤注冊技術(shù)三維注冊技術(shù)--注冊方法空間對象、平面圖像無標志物類

硬件配備要求高三維注冊技術(shù)--基于平面標志物注冊方法基于視覺的注冊技術(shù),通過給定的一幅或多幅圖像確定攝像機和真實世界目標的相對位置和方位。不需求精密的硬件追蹤配置相關(guān)技術(shù)

基于標志物的跟蹤注冊技術(shù)課題針對于移動端的設(shè)計,運行平臺的計算能力有限

涂鴉底板制成標志物以幫助實現(xiàn)三維注冊相關(guān)技術(shù)

基于標志物的跟蹤注冊技術(shù)攝像頭方位的計算獲取相機內(nèi)部參數(shù),根據(jù)這些參數(shù)和獲取的圖像計算相機位置和方向。相機參數(shù):鏡頭焦距,傳感器像元高度、寬度、高寬比相關(guān)技術(shù)-相機標定攝像機跟蹤技術(shù)通過實時記錄跟蹤目標(文中指的是標識)在真實世界里運動方向以及所處位置,讓虛擬場景和真實環(huán)境無縫銜接,確保三維注冊更加精準。(1)增強現(xiàn)實系統(tǒng)通過分析攝像機獲取到的現(xiàn)實環(huán)境圖像,并且通過提取、檢測與識別圖像的方法來最終確定標識;(2)在得到標志后,通過計算攝像機對于該標志的方位,從而得到攝像機自身外部的參數(shù)矩陣;(3)依據(jù)判斷識別出的標識,在特定位置生成與之相對應的三維模型;(4)通過攝像機的方位完成虛擬模型的三維注冊,最后依托顯示技術(shù)把增強后的效果呈現(xiàn)出來。相關(guān)技術(shù)-攝像機跟蹤技術(shù)相關(guān)技術(shù)-分UVUV是UV紋理貼圖坐標的簡稱,UV與三維坐標方向X軸,Y軸,Z軸相似,同為方向概念。UV紋理坐標記錄著多邊形和細分曲面網(wǎng)格上點的信息。這個系統(tǒng)叫UV紋理空間。UV紋理空間中,U表示水平方向,V表示垂直方向,這個空間中的點叫做UV點,和模型網(wǎng)格上的點是一一對應的,可以通過UV編輯器來查看UV點在貼圖上的位置。相關(guān)技術(shù)-分UV將一個三維曲面網(wǎng)格展開到一個平面上,這個展開的平面就是UV貼圖。得到UV貼圖的過程就是分UV。分UV是一個三維轉(zhuǎn)二維的過程,更直觀地表達就是將三維立體模型的表面轉(zhuǎn)化為平面的過程。模型與UV坐標貼圖的映射關(guān)系是由建模的最后步驟UVmapping完成的,即UV映射。相關(guān)技術(shù)-分UV在傳統(tǒng)的分UV技術(shù)的基礎(chǔ)上,合理使用UV重疊和拆分技術(shù),使分UV的結(jié)果既能夠完成模型的貼圖渲染又要具藝術(shù)性,使之直觀地顯現(xiàn)出模型的形象本質(zhì),同時一個模型的所有組成的分UV結(jié)果不重合地分布在一張貼圖上。在本項目中里我們稱這種分UV方法為人工形象化分UV?;驹瓌t是一樣的一個模型對應一張UV貼圖相關(guān)技術(shù)-人工形象化分UV相關(guān)技術(shù)-人工形象化分UV相關(guān)技術(shù)-人工形象化分UV畫冊Marker檢測識別畫冊Marker的設(shè)計中,畫冊標識既是系統(tǒng)三維注冊實現(xiàn)的手段,又是畫冊增強現(xiàn)實模型紋理信息的攜帶者。畫冊Marker檢測識別畫冊Marker檢測識別FrameMarker框架的惟一的ID標記編碼成二進制模式分布在形象標識的四周邊緣。幀標記允許任何圖像被放置在邊界標識。畫冊Marker檢測識別ImageTarget是可以被VuforiaSDK探測和跟蹤的圖像。不同于傳統(tǒng)的基準標記,數(shù)據(jù)矩陣代碼和QR碼,圖像目標不需要特殊的黑色和白色區(qū)域或代碼識別。SDK檢測和跟蹤圖像本身的自然特性,然后對比這些天然特性與已知的目標資源數(shù)據(jù)庫圖像的自然特性。一旦檢測到圖像目標,SDK將跟蹤目標圖像,哪怕目標圖像只要少部分在相機的視野。圖像本身作為Marker畫冊Marker設(shè)計畫冊Marker設(shè)計畫冊Marker設(shè)計畫冊Marker設(shè)計畫冊Marker設(shè)計畫冊Marker設(shè)計畫冊Marker設(shè)計標識坐標系轉(zhuǎn)換在基于標識的增強現(xiàn)實系統(tǒng)中Marker坐標系矩陣轉(zhuǎn)化至Camera坐標系Camera坐標系矩陣轉(zhuǎn)化至圖像坐標系標識坐標系轉(zhuǎn)換世界坐標系轉(zhuǎn)化到攝像機坐標系標識坐標系轉(zhuǎn)換攝像機坐標系轉(zhuǎn)化到實際圖像坐標系理想狀態(tài)下攝像機的光軸經(jīng)過平面中心,并且與成像平面垂直,在圖7中三角形OO1P1和OO2P相似:f/z=O1P1/O2P2=x1/x=y1/y。x1

=xf/z,y1

=fy/z。可以用齊次方程清晰地把攝像機的成像模型表示成:標識坐標系轉(zhuǎn)換標識坐標系為模型渲染紋理貼圖的坐標系命名為Matrix4x4Matrixuv,uv為標識名,則標識坐標系的矩陣為:Matrixuv=Matrix4x4.TRS(uv.transform.position,uv.transform.rotation,uv.transform.lossyScale));攝像機坐標系為內(nèi)置高通增強現(xiàn)實預置攝像機系統(tǒng)坐標系命名為Matrix4x4MatrixarCamera,arCamera為攝像機,則攝像機坐標系為:Matrix4x4MatrixarCamera=Matrix4x4.TRS(arCamera.transform.position,arCamera.transform.rotation,arCamera.transform.lossyScale);設(shè)轉(zhuǎn)換完成的圖像坐標系為Matrix4x4MatrixCoordinate,最后可完成得到MatrixCoordinate=arCjectionMatrix*MatrixarCamera.inverse*Matrixuv。渲染3D模型并展示在Unity3D中所以的圖像繪制都是通過Shader完成的。通常情況下圖像的渲染是利用Unity3D自帶的Shader,也就是Build-inShader完成的。本項目為了完成三維模型的渲染特殊效果,需要自定義功能Shader用于該項目根據(jù)坐標系轉(zhuǎn)換獲取貼圖渲染增強現(xiàn)實目標三維模型。渲染3D模型并展示Shader(著色器)是由GPU運行的,可以操作三維立體模型的一段計算機程序,它的功能是用特定的方法把輸入的Mesh(網(wǎng)格)、貼圖以及顏色等信息打包在一起輸出。渲染3D模型并展示Shader程序的基本結(jié)構(gòu)渲染3D模型并展示基于增強現(xiàn)實技術(shù)的3D畫冊實現(xiàn)需要完成對待顯示3D模型表面紋理基于UV計算處理效果,因而需要根據(jù)要求定制一個可編程著色器,取名為ARPictureUV。可編程著色器程序基本結(jié)構(gòu)與工作流程的基礎(chǔ)上完成的。渲染3D模型并展示可編程著色器工作流程系統(tǒng)實現(xiàn)-總體架構(gòu)設(shè)計系統(tǒng)實現(xiàn)-總體架構(gòu)設(shè)計虛實融合原理圖系統(tǒng)實現(xiàn)-總體架構(gòu)設(shè)計項目功能結(jié)構(gòu)圖系統(tǒng)實現(xiàn)-總體架構(gòu)設(shè)計系統(tǒng)總體狀態(tài)圖系統(tǒng)實現(xiàn)FrameMarker場景效果系統(tǒng)實現(xiàn)ImageMarker場景效果系統(tǒng)實現(xiàn)ImageLocationMarker3D場景效果效果展示FrameMarker演示畫冊效果展示FrameMarker演示效果效果展示ImageMarker畫冊測試圖效果展示ImageMarker演示效果效果展示ImageMarker演示效果效果展示ImageLocationMarker測試畫冊效果展示ImageLocationMarker測試效果效果效果展示效果展示就畫冊增強現(xiàn)實的效果的穩(wěn)定性而言,利用識別度最高級別的邊框制成的ImageLocationMarker涂鴉底板更具優(yōu)勢(該例子達到了此要求)。ImageMarker如果能夠做成最高級別的識別度,也能夠有很好的效果,只是這個無疑給難涂鴉底板設(shè)計增加了難度。部分代碼usingUnityEngine;usingSystem.Collections;publicclasstestSavePictureUV:MonoBehaviour{ publicGameObjectButoonSave; publicGameObjectButoonResave; publicSavePictureUVsave; voidStart(){ ButoonResave.GetComponent<UIButton>().isEnabled=false; } publicvoidBSave(){if(save){ save.enabled=true; save.show();ButoonResave.GetComponent<UIButton>().isEnabled=true;ButoonSave.GetComponent<UIButton>().isEnabled=false; }} publicvoidBResave(){if(save){ save.enabled=true; save.reshow(); save.enabled=false; ButoonResave.GetComponent<UIButton>().isEnabled=false; ButoonSave.GetComponent<UIButton>().isEnabled=true; }}}usingUnityEngine;usingSystem.Collections;[RequireComponent(typeof(Camera))]publicclassSavePictureUV:MonoBehaviour{ publicCameraarCamera; publicMaterialuvMaterial; publicGameObjectuvQuad; publicGameObjectmodel;publicGameObjectfound; RenderTexturerenderTexture; boolisshow=false; Matrix4x4Matrixuv,MatrixarCamera,MatrixCoordinate; publicvoidshow(){model.SetActive(true);found.SetActive(false);isshow=true; } publicvoidreshow() { model.SetActive(false); found.SetActive(true); if(renderTexture!=null)renderTexture.Release(); renderTexture=null;uvMaterial.mainTexture=null;isshow=false; } voidOnRenderImage(RenderTexturesrc,RenderTexturedest){ if(isshow){ if(arCamera==null||uvMaterial==null) enabled=false; if(renderTexture!=null)renderTexture.Release(); renderTexture=null; renderTexture=newRenderTexture((int)camera.pixelWidth,(int)camera.pixelHeight,0); renderTexture.Create(); Graphics.Blit(src,renderTexture); translate(); uvMaterial.SetMatrix("_uvm",MatrixCoordinate); uvMaterial.mainTexture=renderTexture; Graphics.Blit(src,dest); enabled=false; } }voidtranslate(){Matrixuv=Matrix4x4.TRS(uvQuad.transform.position,uvQuad.transform.rotation,uvQuad.transform.lossyScale); MatrixarCamera=Matrix4x4.TRS(arCamera.transform.position,arCamera.transform.rotation,arCamera.transform.lossyScale); MatrixCoordinate=arCjectionMatrix*MatrixarCamera.inverse*Matrixuv; }}涂鴉底板識別數(shù)據(jù)搜集分析識別方案識別遮擋情況重復數(shù)*案例數(shù)識別/不識別結(jié)論FrameMarker幀標識部分遮擋20*32/58幀標識部分遮擋不識別FrameMarker幀標識無遮擋20*359/1幀標全部可見時成功識別FrameMarker幀標識成功識別后部分遮擋20*31/59幀標識成功識別后部分遮擋不可識別ImageMarkerImageMarker首次識別部分遮擋20*31/59ImageMarker首次識別部分遮擋不識別ImageMarkerImageMarker無遮擋20*356/4ImageMarker全部可見成功識別ImageMarkerImageMarker成功識別后部分遮擋20*33/57ImageMarker成功識別后部分遮擋可識別七彩海洋館游戲內(nèi)容:游戲場景為迷宮。螃蟹為玩家,其他動物為敵人,螃蟹在場景中通過WSAD健前進后退左轉(zhuǎn)右轉(zhuǎn),按空格鍵發(fā)射子彈,前進過程中必須消除其他動物障礙,子彈如果射中動物,動物和子彈都消失,如果到達終點,則出現(xiàn)是否進入下一關(guān),下一關(guān)過關(guān)后,則出現(xiàn)勝利畫面。預制體制作觸發(fā)器功能子彈發(fā)射運動控制重復調(diào)用倒計時碰撞檢測時銷毀物體菜單腳本MainMenu.csusingUnityEngine;usingSystem.Collections;publicclassMainMenu:MonoBehaviour{privateboolmenushow; voidStart(){ DontDestroyOnLoad(this); menushow=true;//初始化為true,即顯示菜單 } voidUpdate(){ if(Input.GetKey(KeyCode.Escape)){menushow=true;}} voidOnGUI(){ if(menushow==false){return; } if(GUI.Button(newRect(Screen.width/2-30,Screen.height/2-90,60,30),"Level1")){ Application.LoadLevel(1);menushow=false;//隱藏菜單 }elseif(GUI.Button(newRect(Screen.width/2-30,Screen.height/2-50,60,30),"Level2")){ Application.LoadLevel(2);menushow=false;//隱藏菜單 }elseif(GUI.Button(newRect(Screen.width/2-30,Screen.height/2-10,60,30),"Help")){ Application.LoadLevel(6);menushow=false;//隱藏菜單 }elseif(GUI.Button(newRect(Screen.width/2-30,Screen.height/2+30,60,30),"Quit")){ Application.LoadLevel(3);menushow=false;//隱藏菜單 } }}DontDestroyOnLoad(this);加載新場景的時候使目標物體不被自動銷毀。

子彈發(fā)射腳本Fire.csusingUnityEngine;usingSystem.Collections;publicclassFire:MonoBehaviour{publicTransformFirePoint;publicRigidbodyBullet; //Updateiscalledonceperframe voidUpdate(){ //按空格鍵發(fā)射子彈

if(Input.GetKey(KeyCode.Space)){ Rigidbodyclone; clone=Instantiate(Bullet,FirePoint.position,FirePoint.rotation)asRigidbody; clone.velocity=transform.TransformDirection(Vector3.forward*500); } }

}publicTransformFirePoint;Transform是伴隨游戲?qū)ο笊傻?,所以不能直接單獨?chuàng)建。

你可以聲明一個Transform然后給他賦值,比如聲明一個公共的Transform,然后在在屬性面板中將你需要物體(prefabs)拖拽到該變量上。publicRigidbodyBullet;聲明剛性物體,預設(shè)物體賦值Rigidbodyclone; clone=Instantiate(Bullet,FirePoint.position,FirePoint.rotation)asRigidbody; clone.velocity=transform.TransformDirection(Vector3.forward*500);clone是個Rigidbody組件而Instantiate()是復制一個游戲?qū)ο蟆?/克隆炮彈,以及炮彈發(fā)射的方向//克隆炮彈發(fā)射方向上的速度游戲邏輯腳本GameLogic.csusingUnityEngine;usingSystem.Collections;publicclassGameLogic:MonoBehaviour{ publicGameObjectInsert;publicGUIStylemyStyle; privatefloatmytime; //Usethisforinitialization voidStart(){mytime=120.0f; InvokeRepeating("count",0,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論