Unity是最爲流行的遊戲引擎之一。這是有充分原因的:Unity有一個讓它很是容易上手的強大的可視化編輯器,功能強大,好的社區支持,有吸引力的價格,等等!
若是你渴望嘗試Unity,沒有比這篇教程更適合你的了!在這篇教程中,你會學習如何用Unity建立一個簡單的iOS遊戲 – 而且以前不須要有任何經驗!:]
在這篇教程中,你要建立的這個簡單遊戲是讓玩家在限定的時間內,繞過沿途的障礙物順利達到終點。
在過程當中,會向你介紹Unity的開發環境和工做流程,而且學習遊戲設計的基本概念。
這篇份教程將會分爲三個部分:
在第一部分中,經過建立一個遊戲,這個遊戲具備一個帶有控制機制的簡單角色,經過這個遊戲使你學會使用Unity的基本操做。你也會學習如何將的項目部署到iOS平臺上。
在第二部分中,你會掌握如何使用內建的控制器對象和標準庫中的腳原本加強角色的移動;如何用Unity Remote來調試;如何美化遊戲的場景。
在第三部分中,你將會添加遊戲規則到你的項目中,而且創建起遊戲設計的概念,這些概念包括添加預製件,計時器,菜單和音效來加強遊戲的體驗。
準備好了添加一個強大的新框架到你的技能欄裏了嗎?請繼續閱讀!:]
讓咱們開始吧
當你完成這個系列的教程,你就會熟悉Unity的開發工做流,它包括四個基本的部分:
- 在Unity Editor中搭建你的遊戲場景
- 用MonoDelelop Editor撰寫腳本
- 用Unity Romote遠程調試
- 用Unity Editor發佈到你的iOS設備上
在教程的第一部分中,你要安裝Unity,學習編輯器界面的基本功能,而後經過建立一個項目,來向你介紹遊戲基本的概念。
第一部分結束時,你會在遊戲中獲得有一個能夠經過觸摸觸發而移動的角色。你也會在Unity Editor和iOS設備上測試你的項目。
這篇教程使用的是Unity版本4 – 若是你尚未安裝,那就前去下載Unity吧。
Unity提供了一個功能完整的, 具備30天免費試用時間的專業版本。這個版本容許你開發遊戲,而且能夠部署遊戲,並運行在iOS平臺上。雖然Unity能夠運行在Mac和Windows平臺上,這份教程是基於Mac環境的。
建立項目
當你下載而且安裝完Unity以後,開啓Unity。若是這是你第一次啓動Unity, 會提示你激活你的程序。選擇Activate the free 30-day trial of Unity Pro選項,就像下面截屏所示:
而後你須要建立一個Unity帳號,若是你尚未的話,確認你的郵件地址,而後經過Unity登陸。
當你登陸後,你會被問及一些問題。若是你翻到列表的最下面,而後點擊」Not Right Now.」,這樣你就能夠跳過這些問題:]。最後,你就能夠開始使用Unity了。
到了這步,一個缺省的項目建立好並呈如今你的面前 – 就像下面這樣:
扔掉那個項目,而後經過選擇菜單中的FileNew Project來建立一個新的項目。一個項目導向會呈如今你面前:
在項目嚮導中,點擊」Set」而後導覽到你想要保存這個項目的文件夾下。輸入DashAndZag做爲項目的名稱,點擊「保存」,最後是」Create Project」。(會詢問你是否想要保存以前打開的那個缺省的項目,可是你能夠選擇不這樣作,除非基於某種緣由你想保留它…)
注意:在項目建立的階段,這個項目導覽包含了一些你能夠導入的標準庫。目前先忽略這點。你會在這篇教程的後面導入你須要的庫。
啊哈,一個全新的畫布!可是這些控件條,窗口和標籤欄到底是啥?咱們要從哪裏開始呢?
開始瞭解UI吧…
- 項目視圖:你的Unity項目包含的資源目錄的內容會在這個欄目裏顯示出來。這裏有腳本,場景,預製件和其餘你建立的Unity對象。
- Hierarchy(層次列表)視圖:這裏包含了當前場景中的GameObject。在Unity遊戲中,每一個出現的對象稱之爲GameObject。這些對象能夠是你從the GameObject菜單下建立的簡單的對象,或者是你導入的資源。你那個初始的項目包含一個GameObject:主攝像頭。
- 工具條:工具條容許你在場景視圖或遊戲視圖中操做對象,來控制你的編輯器視圖如何被顯示,也能控制編輯器中游戲的預覽。
- 場景視圖:在這個視圖裏,你能夠擺放你的GameObject的位置來搭建你的遊戲。這個場景視圖包括了一個場景Gizmo(就是右上角帶有座標軸的那個東東)它標明瞭場景鏡頭的當前方位。
- 遊戲視圖:這是一個來自你遊戲中攝像頭的視角。當你點擊工具欄上面的Play按鈕,你會看到這個遊戲視圖。另外,你也能夠經過窗口頂部的標籤來切換遊戲和場景視圖。
- Inspector(檢查器):這個東西提供了被選中的GameObject的進一步詳細信息。你能夠改變這些對象的屬性,例如尺寸,位置,或者是關聯的腳原本改變這個GameObject的行爲。
你將會很熟練的使用工具欄中的變換工具來放置GameObject,並在場景視圖中逛逛。好吧,讓咱們轉到下節:
得到一個把手
Hand工具讓你控制場景中你的視角
<ignore_js_op style="word-wrap: break-word;">
最好理解Hand工具的方式是想象你本身掉到了3D場景中,周圍有不少GameObject. 在你前面的物件是可見的,而那些在你身後的是不可見的。
你或許但願在場景中後退幾步,這樣能夠看到更大的視角,向左或向右移動看見其餘物件,或者旋轉和平移看看你身後有些啥。這個Hand工具就是爲你作這些的。
當你開始添加愈來愈多的GameObject後,你會發如今放置GameObject以前你會愈來愈多的使用這個工具來在場景中調整你的視角。
要看看Hand工具是如何工做的,首先選中它(在工具條的最左邊),而後從Hierarchy視圖中選擇主攝像頭(只是讓你在場景的視圖中有東西能夠看到)。你能夠拖動畫布來移動整個場景。
要縮放,你可使用你的鼠標滾輪,或者按住Control鍵並拖動鼠標。你能夠經過按住Option鍵,拖動鼠標來旋轉。若是你想在任什麼時候候重置你的視角,你能夠點擊場景右上角Gizmo的其中一個軸。
<ignore_js_op style="word-wrap: break-word;">
把玩一會Hand工具,直到你熟練在場景中移動,並可使用Control和Option組合來縮放和旋轉。
你常常要在Hand工具和其餘工具之間切換,因此記住它的快捷鍵是有必要的。缺省狀況下,這些按鍵一個挨着一個,在你的鍵盤的左上角 – Q, W, E, 和R,分別表明Hand, Move, Rotate和Scale.
注意:Hand工具並無移動物件。它僅僅改變你場景的視角,因此它看上去就好像物件被移動了。使用各類Hand工具選項練習在場景中移動。
移動它或放開它
使用Move工具,你能夠在3D空間裏移動GameObject。
<ignore_js_op style="word-wrap: break-word;">
選擇主攝像頭(若是你在場景視圖裏沒有看到它,能夠再Hierarchy視圖中雙擊它),而後點擊Move工具。你應該會看到在主攝像頭邊上出現一個gizmo,有箭頭表明三個軸。經過這些,你能夠移動這個物件:
<ignore_js_op style="word-wrap: break-word;">
紅色的箭頭表明X軸,綠色箭頭是y軸,而後藍色箭頭是z軸。你能夠經過選中這個物件,按住鼠標左鍵,而後在gizmo中拖動,來移動一個GameObject.
選中主攝像頭,移動一下。看一下在Inspector中的transform組件。Position欄目中有x, y和z值表明GameObject的位置。當你移動物件的時候,注意這些值的變化。
你能夠改變GameObject的transform位置,經過使用Move工具,或者直接在這些輸入區域輸入你想要的位置。
若是你只想在一個方向移動物件,選擇gizmo中相應的軸,按住左鍵,拖動那個軸。經過僅僅在x軸移動主攝像頭來測試這點,在Inspector中查看,僅有x-position的值改變了。在y和z軸重複一樣的動做。
你已經知道如何在場景中變換你的我的的視角,也知道了在場景中如何移動物件。到目前爲止都還不錯哦!
你帶着我轉一轉
Rotate工具讓你在3D空間旋轉GameObject
<ignore_js_op style="word-wrap: break-word;">
要了解Rotate工具,並知道如何使用它,更深刻的討論場景的Gizmo是頗有必要的。在場景視圖右上角能夠找到場景的Gizmo,不一樣的視圖有着不一樣的模式。
有一種模式(如左下方那個圖)讓你經過一個3D透視,以一種自由的方式觀察你的場景。若是你想要更好的表現你的遊戲在3D空間的樣子,這是很是有用的。
你能夠點擊gizmo下面的文字,切換到isometric視角(如右下方圖片展現的那樣)。這種模式當一個物件被旋轉的時候,它更加具備可視性。
左鍵點擊主攝像頭的的中心,用你的鼠標拖動旋轉主攝像頭。當你旋轉這個物件的時候,注意Inspector的TransformRotation屬性的變化。注意,你能夠手動的編輯Inspector中這些值,若是你願意的話。
點擊主攝像頭中心位置,你是要打算沿着全部的軸自由的旋轉。經過點擊表明某個軸的顏色的圓環,你能夠沿着這根軸旋轉GameObject。舉例來講,若只要沿着x-軸旋轉,點擊紅圈選中它,而後按住鼠標拖動來旋轉這個物件。若只要沿着y或z軸旋轉,重複相同的步驟。
一切都歸結爲視點
另外一個關鍵的值得學習的概念是局部和全局(世界)的視角的區別。
經過InspectorTransformRotation字段,重置主攝像頭的旋轉角度到0,0,0。點擊那個叫作」local」的工具條。而後選擇移動工具,這樣你能夠看見場景的Gizmo:
注
意場景的Gizmo和主攝像頭的Gizmo方向是一致。在場景中,x-軸指向同一個方向,而且y-和z-軸也同樣。如今用Inspector的設置TransformRotation值爲0, 0 -20,沿着z-軸來旋轉主攝像頭.
在這篇教程的後面,你將會學習如何移動GameObject,發現你會發現當移動物體時,使用的你指定的不一樣空間(世界或者局部)的差別。
看一下被旋轉的主攝像頭,若是你在局部座標控件的x-方向移動它,它會在與你在世界座標中的x方向移動它最終的位置不同。把這點記在你的腦子裏,從此會有用!
在你繼續以前,重置旋轉角度到0, 0,0,讓咱們回到一個乾淨的狀態。
縮放工具
經過選擇紅色的gizmo把手,測試沿着x軸縮放,而後握住向外移動把手。用Inspector的TransformScale x-值來覈對只有一個改變了。也試一試y和z軸。
當你玩轉了這些控制按鈕後,在InspectorTransform欄目下重置主攝像頭爲下面的設置:
- Position: 0,1,-10
- Rotation: 0,0,0
- Scale: 1,1,1
你的Transform菜單應該看上去像這樣:
在這份教程中,你將要學習其餘編輯器界面組件。包括使用Play按鈕來試玩一個遊戲和使用Unity調試器。
除了孤獨沒有其餘:添加GameObject
如今你已近涉及了一些基本概念,你要開始添加GameObject來給攝像頭做伴 – 只有它本身,確實很孤獨:]
如今相機面對的是一個很是荒涼的世界。 不要懼怕 – 準備來添加一個方塊類型的GameObject來表明主角,還有一個平面類型的GameObject來表明主角在上面移動的地板。
當你用Unity來設計一個遊戲,最好的實踐是對於要開發的遊戲先不要用任何花哨的資源來表明一個主角。在這種方式下,你能夠關注優化遊戲玩法和主角的移動上,而不被其餘圖像元素所分心。
另一個注意點是Unity是一個很好的遊戲引擎,可是你不要想用它來建立圖像資源。在圖形部門,那裏應該有許多工具都是至關不錯
的,而Unity善於從範圍較廣的那些工具中導入資源。
一般狀況下,典型的遊戲開發的分工是,遊戲開發使用Unity開發遊戲玩法,而美術設計並行的使用他們喜歡的圖像工具建立各類資源。當兩方工做收斂時,這時候導入圖像資源來給遊戲增色是合理的。
如今你已近認知了那點,讓咱們開始吧!經過選擇Game ObjectCreate OtherPlane.添加一個平面類型的GameObject來表明地面。
這個新的平面GameObject應該出如今Hierarchy視圖中。在Hierarchy視圖中選擇地面,而後使用Inspector設置TransformPosition爲 0,0,0.再用Inspector來放大它到50, 1, 50.你的場景將會看上去像這樣:
下一步,你將要添加主角GameObject,在你的遊戲中將會用一個方塊來表示。就是這樣的,英勇的小方塊!
選擇Game ObjectCreate OtherCube,而後一個新的方塊類型的GameObject將會出如今Hierarchy視圖中。在Hierarchy視圖中選擇這個方塊,而後用Inspector設置TransformPosition爲0,0,0.你的場景應該看上去像這樣:
點擊移動工具,而後點擊場景Gizmo的y軸來只在y軸方向有約束的移動。向上移動英勇的小方塊讓它稍稍高於地面(地板)。你也能夠設置變換位置到0,1,0來向上移動這個立方體一點點。
如今到了激動人心的時刻了 – 點擊在Unity編輯器的工具條上的Play按鈕(在最上面)來預覽你的遊戲:
你正在使用 Unity編輯器測試你的遊戲。這個編輯器應該切換到遊戲視圖,而且你應該看到像這樣的一些東西
你所看見的遊戲的視圖是經過你的場景中的主攝像頭看見的東西。你的主角,這個英勇的小方塊,出如今遠處,地面的上方 – 一我的的世界,可是勇敢的屹立在那裏!
由於你尚未添加任何其餘組件來改變玩家的行爲,因此遊戲中沒有啥事情會發生。另外場景也有一些暗。下一步,你能夠首先添加一個光源到你的場景中。
經過再次點擊Play按鈕中止遊戲預覽。回到場景視圖,添加一個光源。選擇Game ObjectCreate OtherPoint Light。一般狀況下,在從此調整它的位置前移動光源到原點。使用Inspector設置transform position爲0,0,0.
如今調整光源的高度和亮度,讓你能夠看清場景的更多範圍。這裏有個提示:使用移動工具,而後沿着y軸作有約束的移動。
要調整亮度,修改Light組件中的Range和Intensity設置。使用」手型」工具來旋轉,若是你但願獲得場景更好的視角。
一個好的方式來觀察你是否有了足夠的光線是使用Game面板切換到Game視圖(至關於點擊Play按鈕)。來回嘗試直到你能夠看見你的角色:
當你調整完以後,點擊Play按鈕來合適你的修改。當你切換到遊戲視圖,你的視圖應該同下面的類似:
恭喜你,你已近添加了這個教程在這個階段你須要的全部的GameObject!記住,做爲一個好的實踐,你首先要把注意力放在遊戲玩法上,而後再添加圖像元素。
既然你已經作了一些有意義的事情,繼續前進,保存項目中的場景。一個項目能夠有一個或多個場景組成。在遊戲中,你能夠認爲一個場景等同於遊戲的一關。
在這個教程中,你保存教程的每一個部分做爲一個場景。這是人爲製造魔種遊戲關卡的概念,可是它讓你能夠從一個場景到另外一個場景,來重用那些資源。
要保存場景,選擇FileSave Scene,在Save Scene對話框中,命名你的場景爲Level_1。你的項目視圖應該被你剛纔建立的場景所更新。
開始移動:事件函數
遊戲目前太靜態了!它迫切須要運動讓它動起來。
你能夠經過建立你本身的腳本或者使用預先打包的腳本關聯到相關的GameObject來執行一個動做來添加移動。舉例來講,在這個教程的第一部分,你將會建立一個腳本,當玩家被觸碰的時候,移動你的角色。你建立的這個腳本須要響應觸摸事件來改變英勇的小方塊的位置和旋轉角度。
Unity支持如下這些語言來實現腳本化:JavaScript, C#,和 Boo。在這個教材裏,你會用到JavaScript. Unity的腳本語言包括預先定義的事件函數,你可使用這些函數來定義某個GameObject的行爲。
- 你將要常常用到的事件函數是Update()函數。若是你在你的腳本里定義這個函數,它會在每幀被調用一次。你的遊戲顯示的內容每幀會被重繪一次,所以Update函數在特定的幀率下負責顯示的更新。
一個遊戲運行在每秒必定數量的幀率下,另外有一件是須要記住的事是這個幀率很是依賴遊戲運行的平臺,而且還會被被其餘應用佔用操做系統的資源。這裏的意思是你不該該作任何事件敏感的事情,而且你不能假設它會以固定的頻率被調用。
- 另一個預先定義的事件函數,FixedUpdate(),會被已固定的頻率, 獨立於剛纔提到的幀率來調用。若是你的腳本定義了這個函數,它會以固定的間隔被調用(調用和調用之間與Update方法比較有很大的不一樣)。
在FixedUpdate函數中,你應該來處理任何物理相關的工做,由於物理的計算是很是時間敏感的。舉例來講,你能夠有一個遊戲對象使用物理引擎,例如剛體(你會在以後學習到更多這方面的信息)。當這個物件與其餘物件碰撞後,你想要計算做用於物件的力,那你就應該在FixedUpdate()函數裏作這件事。
對於像是改變物件的位置或旋轉角度等操做,最好是在Update()函數裏去作。
- 第三個有用的函數是Start(),它會在第一幀更新發生以前被調用。你通常會把初始化的操做放在這裏。
- 最後,Awake()函數當遊戲開始的時候被調用。它是另一個放置初始化代碼的好地方。
對對碰
讓咱們來試一試。經過選擇AssetsCreateJavascript建立一個新的腳本。一個帶有缺省名字爲NewBehaviorScript新的腳本會出如今項目視圖中。在腳本的名字中單擊,而後從新命名它爲MoveSimple。
雙擊腳本打開它。它應該在捆綁Unity編輯器的MonoDevelop中打開,而後包含下列代碼:
[C#]
純文本查看
複製代碼
1
2
3
4
|
#pragma strict
function Start () {
}
function Update () {
}
|
Start()和Update函數已經爲你建立好了,由於它們是經常用到的函數。你如今不須要Start()函數。在#pragma行後面,添加下面的變量來控制英勇的小方塊的移動和旋轉速度:
[C#]
純文本查看
複製代碼
1
|
var speed :
float
= 3.0;
var rotateSpeed :
float
= 10.0;
|
用以後的代碼替換空的Update()函數:
[C#]
純文本查看
複製代碼
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
|
function Update () {
if
(Input.GetMouseButtonDown(0)) {
var ray : Ray = Camera.main.ScreenPointToRay
(Input.mousePosition);
var hit : RaycastHit;
if
(collider.Raycast (ray, hit, 100.0)) {
Debug.Log(
"Moving the target"
);
transform.Translate(Vector3.forward * speed);
transform.Rotate(Vector3.up * rotateSpeed);
}
else
{
Debug.Log(
""
);
}
}
}
|
保存你的修改。
這段代碼首先查看鼠標的點擊事件,特指來之鼠標左鍵的輸入。參數「0」表示左擊,「1」表示右擊,「2」表示中鍵點擊,當咱們使用GetMouseButtonDown函數的時候。若是點擊被監測到,那麼代碼構建一條從主攝像頭到鼠標點擊位置的射線。
collider.Raycast()函數監測到關聯這個腳本的碰撞體是否被射線命中。若是碰撞體命中,這個collider.Raycast()調用返回true.這個函數有三個參數:
- 你構建的射線。
- 一個RaycastHit對象,若是碰撞發生,它會包含更多的信息。
- 一個射線長度的參數。
假設有一個true的結果,後面的代碼根據speed變量朝前輕推你的角色,以及基於rotateSpeed變量旋轉你的角色。transform.Translate()來移動GameObject的位置,經過它的Vector3輸入來指定方向和距離。
Vector3是一個3D的向量,表示物件的方向和長度,或矢量。這個向量能夠打散成x,y和z三個部分。
在代碼中,你英勇的小方塊是朝前方移動一個乘上速度的變量的的距離。Vector3.forward等同於Vector3(0,0,1),而且速度的乘數是3,將會使方塊移動Vector3(0,0,3)
角色移動的方向是在角色的局部空間裏。要體驗這個方向,選中方塊,而後使用move工具,而後查看z軸方向。那是角色將要移動的方向。
transform.Rotate()函數根據Vector3輸入的一個角度旋轉GameObject。歐拉角被用做描述GameObject的旋轉。在這個旋轉的案例裏,物件會沿着z軸旋轉歐拉角z度,沿着x軸是歐拉角x度,最後沿着y軸表明歐拉角y度。
在上面的代碼裏,使用Vector3.up或者Vector(0, 1, 0)來旋轉角色,它表示沿着y軸旋轉。這個旋轉角度是乘上了旋轉速度。這個旋轉是相對於角色的局部座標系的。因此你英勇的小方塊會沿着它的y軸旋轉,正如你所知道的,有別於沿着世界座標系旋轉。
注意:一個真實的遊戲不會使用這種類型的移動來控制一個角色。它們用在這裏目的是簡單的演示涉及移動GameObject的基本概念,在這個教程以後的部分被更加合理的移動所替代。
這段代碼裏包含了兩個Debug.Log()語句。當遊戲運行的時候,這個日誌輸出被打印到Unity的控制檯。你能夠在Unity編輯器的底部看到最後的日誌的輸出。你也能夠經過選擇WindowConsole打開控制檯來查看日誌的輸出,也包括清除日誌。
你也能夠把目光保留在Unity編輯器的底部,關注在日誌的輸出上,那裏有任何腳本的錯誤會被顯示出來。
經過代碼,如今你已經定義了一個行爲。你能夠分配這個腳本到一個GameObject上。在Hierarchy視圖中選擇那個方塊,而後選擇ComponentScriptsMove Simple。這步稱之爲添加一個腳本行爲到一個GameObject,你只要選擇你已經建立的(名叫MoveSimple)的腳本。
注意Inspector中如今包含了一個Move Simple腳本欄。你在代碼中定義的公共變量,speed和rotateSpeed,在Inspector視圖中可見了。你能夠在不須要修改腳本的前提下,修改這些變量改變被關聯的GameObject行爲.
這個意思就是,若是你有兩個角色在場景中都帶有MoveSimple腳本關聯到它們,在InspectorMove SimpleSpeed 字段下,經過增長speed的值,來讓一個角色比另一個移動的快一些。
點擊Play來試玩遊戲,觸碰角色一下,而後注意在Inspector中改變的transform position和rotation屬性。
注意transform position從0,1,0開始變化到0,1,3 – 換句話說,在z軸方向有3單位的移動,是由於speed的乘數的關係。旋轉也從1,1,1變換到1, 10, 1, 這個很是接近rotateSpeed乘數。
當遊戲運行的時候,你能夠在Inspector中改變速度和旋轉的變量。在點擊角色後,增長速度而且觀察變換位置。
中止遊戲,而後注意觀察速度和旋轉角度變量被設置會它們原來的值。任何你在玩遊戲的過程當中改變的都是臨時的。這讓你有機會搗鼓各類設置,而後返回最初的設置狀態當你已經完成你的預覽。若是你想要持久的變化,你能夠在測試遊戲以前再次這樣作。
注意當你玩遊戲的時候,根據玩家是否被點擊或不被點擊,控制檯記錄準確的調試信息。
在攝像頭上也來作一邊
你會注意到當你移動英勇的小方塊時,他離開攝像頭愈來愈遠 – 這不是一個好的感受。就像一個負責任的家長,你但願經過修改你的遊戲,讓主攝像頭跟追在你的角色後面,並保持固定的距離。這是第三人稱遊戲典型的手法。
選擇AssetsImport PackageScripts而後在Items to Import欄目的中,僅選擇SmoothFollow腳本,而後點擊Import
注意:若是你沒有獲得import selection對話框,當你選擇AssetsImport PackageScripts,那麼試圖退出Unity而後從新啓動。這點對我來講是有效的。
在你的項目視圖中一個新的Standard Assets文件夾應該會出如今那裏。若是你導覽到它的子文件夾下,你應該能夠看到也SmoothFollow的腳本。雙擊這個腳本在MonoDevelop中打開它,這樣你看到代碼的關鍵部分。
.
上面表明用於被跟蹤目標的公共變量。目標的位置信息用來設置跟隨者的位置和旋轉角度。
跟隨者的位置和旋轉角度在LateUpdate()中設置,這是另外一個預先定義的事件函數。這個函數在UPdate()函數完成後被調用。 你能夠將依賴那些在Update()發生的操做的代碼放到那裏。
當英勇的小方塊的位置和旋轉在MoveSimple腳本中定義的Update()改變後,這個攝像頭能夠在SmoothFollow腳本的LateUpdate()中更新它的本身位置和旋轉角度。
[C#]
純文本查看
複製代碼
01
02
03
04
05
06
07
08
09
10
11
12
13
|
..
var wantedRotationAngle = target.eulerAngles.y;
var currentRotationAngle = transform.eulerAngles.y;
..
currentRotationAngle = Mathf.LerpAngle (currentRotationAngle, wantedRotationAngle, rotationDamping * Time.deltaTime);
..
var currentRotation = Quaternion.Euler (0, currentRotationAngle, 0);
..
transform.position = target.position;
transform.position -= currentRotation * Vector3.forward * distance;
transform.position.y = currentHeight;
..
transform.LookAt (target);
..
|
這裏列舉上面代碼的關鍵點:
- 計算跟隨者須要的旋轉的角度,來匹配目標的旋轉。這個旋轉沿着y軸。
- 依賴與distance變量的偏移來讓跟隨者保持在目標後面。也使用來之#1的結果沿着y軸旋轉跟隨者。最後確保跟隨者以高於目標一個固定的高度。
- 確保跟隨者老是面對目標
如今關聯腳本到主攝像頭。選擇主攝像頭在Hierarchy視圖中,而後選擇ComponentCamera ControlSmooth Follow:
覈對那個爲Smooth Follow的新欄目已被添加到主攝像頭的Inspector中。
注意在這點上,Target變量沒有被賦值,有一個None在它邊上。你想要分配一個方塊GameObject到這個輸入上。當主攝像頭仍然被選中的前提下,而後在Inspector中Smooth Follow腳本可見,拖動方塊GameObject從Hierarchyshi視圖到Target變量。另一個選項是,你能夠點擊在Target值邊上那個帶有一個點的小圓圈來獲得一個物件的列表來選擇。
Target變量應該連接到方塊(你的角色)。
點擊Play按鈕。你應該當即在視圖裏看到變化,就像你從一個給定高度向下看着玩家。點擊玩家來移動它,而後觀察攝像頭如何跟隨玩家。注意在Inspector中的主攝像頭位置信息,而後它在英勇小方塊移動時的變化。
中止遊戲,而後進入下一步以前保存場景。部署到iOS上若是你像我那樣,你會火燒眉毛的想看看這如何在iOS設備上運行的。:]好消息是試用版的Unity Pro容許你在iOS上測試你的項目。
在實際設備上測試你的Unity項目是一個好的實踐(i.e. 不是模擬器)。你不想讓你的測試只到模擬器爲止,便是你只能作到這點。由於遊戲開發特別依賴相關的硬件,你應該在實際的設備上測試,這樣你能夠儘早發現性能上的問題。.
要部署到一個iOS設備上,你須要註冊一個Apple的開發者帳號,這樣才能夠有設備部署能力。若是你尚未,去蘋果那裏,花掉99美金 – 咱們在這裏等你.:]
Unity能夠爲你的遊戲建立一個Xcode項目,這讓你能夠部署到一個iOS設備上。要完成這步,選擇FileBuild Settings:
選擇iOS平臺,而後點擊Switch Platform. 而後點擊Player Setting按鈕,你能夠在Build Settings對話框的底部找到這個按鈕。Unity編輯器的Inspector應該顯示Player Settings,這裏能夠定製你的iOS部署所須要的參數。根據下面來修改:Resolution and Presentation
- Default Orientation: Landscape Left
其餘設置
- Bundle Identifier: 須要Bundle Identifier來正確在你的設備上構建你的應用。
- SDK Version: Device SDK
- Target iOS Version: 4.3
回到Build Settings對話框。在Build section的場景列表中添加那個要生成Xcode項目的場景。由於你的項目僅有一個場景,這裏不用動腦。經過點擊Add Current按鈕來添加Level_1場景。
點擊Build按鈕來啓動構建的過程。你會被問要指定的位置來保存這個Xcode項目。導覽到你想要保存的的位置來保存你的xcode項目,在Save As字段中輸入DashAndZag,而後選擇保存。Unity會建立這個Xcode項目,而後打開包含xcode項目文件的文件夾。這個項目會有一個叫作Unity-iPhne.xcodeproj的文件。用Xcode打開這個項目,確保scheme設置爲Unity-iPhone,選擇你的設備,而後編譯這個項目。
<ignore_js_op style="word-wrap: break-word;">
運行這個應用。你應該首先觀察到一個啓動的屏幕做爲Unity缺省的logo.而後,你的遊戲應該出現了:
觸碰這個英勇的小方塊而後讓它四處移動。你已經構建和部署了你的第一個Unity項目在iOS上了。(文章轉載自互聯網)