Unity-2017.2官方實例教程Roll-a-ball(一)


聲明:

本文系轉載,由於Unity版本不同,文中有一些小的改動,原文地址:http://www.jianshu.com/p/6e4b0435e30e

 

Unity-2017.2官方實例教程Roll-a-ball(二)

文中章節列表如下所示:

一、如何創建一個新項目(Project)

二、如何創建一個新的游戲場景(Scene)

三、如何添加基本的游戲對象(GameObject)

四、如何添加燈光(Light)

五、如何給游戲對象添加腳本(Script)

 

一、如何創建一個新的項目(Project)

創建項目有兩種方式,第一種是在沒有打開Unity工程的情況下創建項目,第二種是在已經打開了Unity工程的情況下,再新建一個項目,兩種情況如下所述:

方法一:雙擊打開Unity,開始面板中可以新建項目,如下圖所示,點擊New:

 輸入工程名,選擇工程文件的存放位置,以及游戲模式(3D/2D),點擊Create project,完成工程的創建。

方法二:點擊File->New Project,新建完成的后,當前打開的工程會自動關閉。

創建完成后的界面如下所示:

頁面的布局可以根據個人喜好自行設置,設置方法為:Window->Layouts,或者通過右上角的下拉列表選擇,下拉列表顯示的為當前的布局方式,里面有多種方式可供選擇,可以嘗試一下。

二、創建一個新的游戲場景(Scene)

 在新建項目之后,Unity會建立一個默認名為Scene的場景,如果要新建一個場景,需要先保存當前場景,然后點擊File->New Scene新建場景;如果當前場景為默認的Scene場景,並且場景沒有做任何修改,那么點擊File->New Scene時,並不會重新建立一個場景。Unity中所有的游戲資源文件都保存在Assets文件夾下面,為了便於資源管理,我們需要對資源進行分類,這一點對於游戲資源很多的情況有很好的幫助。首先我們建立一個Scenes文件夾來保存所有的場景文件,創建方法有三種,具體步驟如下:

方法一:點擊菜單欄的Assets->Create->Folder,命名為Scenes

方法二:右鍵點擊Project視圖中的Assets->Create->Folder,命名為Scenes

方法三:直接在項目目錄下的Assets文件夾下新建一個文件夾,命名為Scenes,Unity會自動導入文件夾到工程中

如果要對新建的文件夾重命名,可以使用鼠標左鍵點一下文件夾,然后再點一下(注意:不是雙擊),輸入新的文件名即可。

 保存當前場景可以使用快捷鍵Ctrl+S或者點擊File->Save Scenes,注意場景保存的位置一定要在Scenes文件夾下:

三、如何添加基本的游戲對象(GameObject)

(一)、添加游戲對象--平台(Plane)

保存完場景后,我們就可以在場景中添加一下我們需要的對象了,我們需要添加的第一個游戲對象就是游戲運行的平台,這里我們使用Unity自帶的Plane對象,添加一個對象的方法有3中,具體描述如下:

第一種方法:通過點擊菜單欄的GameObject->3D Object->Plane

第二種方法:通過Hierarchy視圖下面的Create下拉列表來創建,點擊Create->3D Object->Plane

第三種方法:通過在Hierarchy視圖中點擊右鍵來創建,右鍵->3D Object->Plane

創建游戲對象之后,我們可以給它重命名一個有意義的名字來方便理解,這里我們把Plane重命名為Ground,重命名的方法有兩種:

第一種方法:在Hierarchy視圖中點擊一下游戲對象Plane,然后再點擊一下(注意:不是雙擊),輸入新名字即可

第二種方法:右鍵點擊游戲對象Plane,選擇Rename,輸入新名字即可

名字修改完成后,我們還需要做一個很重要的事情(官方強力推薦),我們把平台的Transform屬性給重置一下,我們在Inspector視圖中找到Transform組件,然后點擊它右上角的小齒輪,選擇Reset選項,如下圖:

 

Tips:這個重置操作,官方是建議每次我們添加新的GameObject后最好都做一次,好的習慣我們盡早培養

平台添加成功后,我們可以對其屬性進行一些調整,例如我們調整一下平台的大小,將目光鎖定到Scene視圖,我們可以在其中可直觀的來修改平台的屬性,這里有3個很實用的快捷鍵可以使用:

W:切換到移動模式,該模式下我們可以任意拖動平台,改變它的位置

E:切換到旋轉模式,該模式我們可以任意旋轉平台,改變它的角度

R:切換到縮放模式,該模式下我們可以任意縮放平台,改變它的大小

當然我們也可以直接在Transform里面直接輸入想要的數值,在本例中,我們把平台的Scale X和Z的數值設置為2

Tips:選中一個GameObject,然后點擊F快捷鍵,可以在Scene窗口將攝像機對准你選中的GameObject,方便你快速定位

(二)、添加游戲主角--球體(Sphere)

有了平台后,制作Roll-a-Ball游戲我還需要一個球體,我們可以通過方向鍵來控制球體移動,添加球體的方式,和上面添加平台的方式一樣,只不過我們選擇的是Sphere對象。球體對象創建成功后,我們最先要做什么呢?沒錯,就是官方推薦的做法,我們把球體的Transform屬性重置,然后給他起一個好的名字,這里我們將其命名為Player,因為在這個游戲里面,這個球就代表這我們玩家。

Tips:重置Transform重命名這兩個動作,我們盡量養成好習慣,在創建新的GameObject后,做這兩個標准化動作

然后我們選中球體,通過F快捷鍵,定位到球體,我們會發現此時球有一個半是陷入在平台中的,不要緊,我們通過調節他的Position的Y值為0.5,讓它正好處於平台上:

 四、如何添加燈光(Light)

新版中,每個新建的項目,都會自動帶一個平行光(Directional Light),所以這里我們就不用再添加燈光了,直接修改平行光的屬性就可以了。
前面在講場景文件保存的時候,就提到的好的資源分類可以幫助我們更好的管理游戲資源,這里我們對於GameObject的管理也是一樣的,而在GameObject中,我們沒有文件夾,所以我們使用一個空的GameObject(Empty)來代替文件夾的作用:

(1)、首先創建一個空的游戲對象,GameObject->Create Empty

(2)、然后將其的Transform重置

(3)、然后將其名稱修改為Lighting

(4)、最后我們把Directional Light拖入到Lighting

這樣我們就相當於把Lighting當成一個文件夾,把所有的燈光對象放到這個里面,便於管理。之后,我們為了讓球和陰影有個明顯的區分,我們在增加一個新的光源,用來照射在球體上,我們創建一個新的平行光(Directional Light),這樣我們就有了兩個名叫Directional Light的燈光,這樣不便於區分,於是我們修改一下燈光的名字:

(1)、首先我們將系統默認建立的Directional Light重命名為Main Light

(2)、然后將我們剛剛新建的燈光改名為Fill Light

(3)、然后把Fill Light也拖入到Lighting下面(或者我們直接在Lighting上右擊->Light->Directional Light,這樣不需要拖拽操作新建對象就已經在Lighting下面了)

 

然后我們選中Fill Light,首先我們將其的燈光顏色設置為紅色,這樣便於和Main Light區分開來,然后將它的Rotation屬性分別調整為-33,-135,180:

這樣修改后,我們就可以看到球體上一層紅色的光澤。

 五、如何給游戲對象添加腳本(Script)

有了平台,有了球體,有了燈光,下一步我們就應該讓球體可以動起來了。Unity上手很簡單的一個原因,就是他的做法非常符合我們平時生活的邏輯,比如我們這里想讓球體動起來,那么按照我們正常的想法,我們要做的事情就是 告訴球體,讓他動起來,那么轉換成Unity的實現方法,就是給球體添加一個腳本組件,然后在腳本組件里面告訴他怎么動,下面我們來看看具體的操作:

(一)、給球體添加剛體(Rigidbody)

剛體可以給球體添加物理效果,讓他可以檢測物理碰撞,便於我們后面實現拾取物體和碰撞牆面。給球體添加剛體有兩種方法:

(1)、通過菜單欄的Component->Physics->Rigidbody添加

(2)、通過Inspector視圖底部的Add Component按鈕添加

 (二)、給球體添加腳本(Script)

 首先我們要再提一下開始說到的資源管理思想,為了便於我們管理游戲的資源,所以我們會創建一個文件夾,來專門存放所有的腳本文件:

要想給球體或者說任何一個GameObject添加一個腳本,我們首先選中GameObject,這里我們選中球體也就是我們的Player,然后在Inspector窗口中點擊Add Component按鈕,在彈出的菜單中選着New Script

之后會進入腳本名稱和語言類型選擇,這里我們將腳本命名為PlayerController,然后語言選擇C#(C Sharp):

點擊Create and Add后,我們就成功給球體添加一個腳本組件,然后我們點擊腳本組件右上角的小齒輪按鈕,在彈出來的菜單中選擇Edit Script便可打開腳本編輯器了:

(三)、編輯腳本

我們可以看到,里面有兩個方法,Start和Update,在本例中,我們再添加一個FixedUpdate的方法,該方法只在計算有關物理效果時調用,然后代碼如下:

在上圖中有幾點需要說明:

(1)、第一個紅框中的speed,公有類型的變量可以在Inspector編輯器中顯示並進行修改

(2)、第一個紅框中的rg,私有類型的變量不會在Inspector視圖中顯示

(3)、第二個紅框中我們可以在Start()函數中為GameObject對象進行初始化,這樣可以提高代碼的執行效率

(4)、第三個紅框中Input、Vector3、AddForce和Time.deltaTime,可以從Unity用戶手冊中查看相應的用法

Tips:在上述先添加剛體組件再添加腳本組件的過程中,如果先添加了Script腳本組件,再添加Rigidbody剛體組件,那么Script腳本中的private Rigidbody rg會提示Player中沒有Rigidbody組件,這個時候需要把Rigidbody組件拖動到腳本組件上方(或者把Inspector視圖中的腳本刪除,先添加Rigidbody組件,再綁定Script腳本)。

在本例中,我們可以將Speed數值設置為500,這是一個比較合理的數值,做完這些之后,我們就可以運行游戲看看效果了!

 

 

 

 

 

 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM