從零開始的unity3d入門教程(二)----基本功能講解
一、教學(xué)目標
獨立搭建出一個簡單場景,并基于該場景開發(fā)一個簡單的第一人稱3D游戲
本次教學(xué)Demo已上傳github:https://github.com/waitKey1/Unity-Game-Demo,有需要自取
模型與音效unity包百度鏈接:
鏈接:https://pan.baidu.com/s/1Sh77qhYaan_mZ6MpTVwPog?pwd=xvz8
提取碼:xvz8
注:以上百度鏈接可以完全不用下載,下面有詳細獲取與場景模型搭建方法
二、Unity界面的擺放與介紹
1、Unity界面移動及復(fù)原
這是界面中各個窗口的默認擺放位置,也是項目剛打開時候的樣子
不過由于這樣子擺放,平常工作的時候不是很方便。
1、場景窗口有些太偏,工作不是很舒服
2、游戲播放場景被折疊起來,不能實時看到游戲情況
所以,我們需要對各個窗口進行一下移動,讓其看起來更舒服
(1)窗口移動方式
鼠標左鍵點擊窗口名,拖拽移動窗口,左鍵提起放下窗口
隨便拖拽就可以形成以上這樣的效果
(2)窗口初始化方法
有時候窗口玩壞了怎么辦?一鍵復(fù)原!
Window–>Layouts–>Default
2、平常工作界面
(1)Layouts轉(zhuǎn)換成2 by 3類型
- Window–>Layouts–>2 by 3
- 移動Project窗口到Hierarchy窗口下
- 打開Console窗口并讓其與Projecy窗口并列
Window–>General–>Console
注:這個指令當窗口消失時候,會新建一個新的,當窗口存在的時候則選定這個窗口
(2)最終工作窗口如下
移動并調(diào)整下各個窗口的寬高
令各個窗口擺放位置一般如下
3、各個窗口的中文名及其功能簡述
- Hierarchy 層級窗口:可以看到Scene中物體的層級關(guān)系
- Scene 場景窗口:可以查看/修改物體在場景中的位置
- Game 游戲場景窗口:游戲開始之后這個畫面,就是游戲畫面,
可以通過調(diào)整層級窗口里的Main Camera物體來調(diào)整畫面位置與角度 - Inspector 檢查器窗口/屬性窗口:具備選定物體,查看/修改物體屬性,添加組件等功能
- Project 項目窗口:查看該項目有哪些資源/程序
- Console 控制臺窗口:可以看程序運行報的警告/報錯
二、游戲物體GameObject的創(chuàng)建與修改
1、創(chuàng)建一個正方體
向Unity世界發(fā)出一聲HelloWorld吧,Unity世界在此刻將為你緩緩展開!
- 鼠標移動到Hierarchy窗口下的任意區(qū)域,右鍵3D Object -->Cube
創(chuàng)建成功!
注:物體創(chuàng)建時候,是在當前視圖中心位置創(chuàng)建,不是在(0,0,0)點創(chuàng)建
2、3D Object介紹
- 基礎(chǔ)對象
- Cube:立方體
- Sphere:球體
- Capsule:膠囊體
- Cylinder:圓柱體
- Plane:平面
- Quad:四邊形
- 文字與動畫系統(tǒng)
- Text :文字
- legacy:動畫系統(tǒng)
- 布娃娃系統(tǒng)
- RagDoll:布娃娃系統(tǒng)
- 基礎(chǔ)地形、環(huán)境
- Tree:樹
- Wind Zone:風(fēng)
3、3D Object創(chuàng)建練習(xí)
最終目標圖如下:
(1)創(chuàng)建Cube,Sphere,Capsule,Cylinder,Quad依次排列
對象移動方式:
- 鼠標左鍵點擊選定目標對象后,拖動坐標軸也就是那三個箭頭,物體將沿著拖動的坐標軸移動
- 鼠標左鍵點擊選定目標對象后,拖動坐標系也就是那三個平面,物體將沿著拖動的坐標系移動
(2)創(chuàng)建Plane放在中間
(3)創(chuàng)建一個Text
(4)創(chuàng)建一顆樹
都擺放好即可完成創(chuàng)建與移動練習(xí)!
4、Cube Object Transform屬性修改練習(xí)
在對Cube的Transform組件修改之前需求先練習(xí)一下如下技巧。
- 選定物體練習(xí)
- 刪除物體練習(xí)
- Scene窗口畫面放大、移動、旋轉(zhuǎn)角度和對象追蹤的練習(xí)
(1)選定Scene中的對象
-
對象選定方法
- 在Scene窗口中左鍵點擊并拖拽,最后松開,即可批量選定矩形框定的對象
- 在Hierarchy窗口中左鍵選定Sphere然后再Shift+左鍵點擊Tree,即可批量選定Sphere到Tree之間的全部對象
- 單次選定以及取消某個對象選定方法:批量選定后,Ctrl+左鍵即可選定某個對象,若這個對象已被選定則取消選定。
- 在Scene窗口中左鍵點擊并拖拽,最后松開,即可批量選定矩形框定的對象
(2)刪除Scene中的對象
界面有些嘈雜,我們將其他不是Cube和初始的Camera和Light的對象刪掉吧
-
對象刪除方法
- 在選定對象后,按一個在你鍵盤右上角附近的鍵:Delete。即可刪除所有選定的對象
(3)Scene窗口基本操作練習(xí)
-
Scene窗口縱深前進后退的方法:鼠標滾輪滾動 或 Alt+鼠標滾輪滾動,向前滾動窗口畫面前進。向后滾動,窗口畫面后退。
注:直接滾動,窗口視圖是向中心前進。Alt+鼠標滾動則可以選擇窗口視圖向哪個方向前進
-
Scene窗口上下左右移動的方法:鼠標滾輪摁住拖拽,鼠標前移,畫面向上、鼠標左移,畫面向左等等,其他方向同理
-
Scene窗口以當前位置為旋轉(zhuǎn)原點的角度旋轉(zhuǎn)的方法:鼠標右鍵摁住拖拽,鼠標前移,畫面向上旋轉(zhuǎn)、鼠標左移,畫面向左旋轉(zhuǎn)等等,其他方向同理
-
Scene窗口以窗口中心位置為旋轉(zhuǎn)原點的角度旋轉(zhuǎn)的方法:Alt+鼠標左鍵摁住拖拽,鼠標前移,畫面向上旋轉(zhuǎn)、鼠標左移,畫面向左旋轉(zhuǎn)等等,其他方向同理
-
Scene窗口聚焦某個或某些對象在窗口中心的方法:選定目標對象/對象們,鍵盤按F
(4)Cube對象的Transform組件修改
Transform組件是整個Unity中重要的組件之一,之后也是接觸最多,且屬性改變帶來的視覺效果也很明顯,所以對Unity組件熟悉,可以從Transform組件開始。
- 將其他組件全部折疊
一開始的時候,其他組件也展開了,這樣有些干擾我們的學(xué)習(xí)。一開始不用接觸那么多組件,我們來將其折疊起來吧 - 展開Transform組件
注:折疊單個組件,則是點擊目標組件左邊的倒三角形。只有展開才能折疊,也只有折疊才能展開 - Transform組件的修改練習(xí)
目標屬性修改如下
Poition:在坐標系中的位置
Rotation:對象旋轉(zhuǎn)的角度,逆時針為正,順時針為負
Scale:對象的大小
- 結(jié)果圖如下:
- 修改的時候有些同學(xué)可能會發(fā)現(xiàn),Scene窗口中立方體不見了,這是因為對游戲引擎來說,模型的內(nèi)部由于一般看不到,所以沒有渲染的必要。如果視角在里面,就會出現(xiàn)這種情況–穿模。只要鼠標滾輪往后滾,讓Scene窗口縱深往后移,就可以看到修改后的立方體了。
(5)Cube對象的Transform組件屬性快捷鍵修改
- 快捷鍵在Scene窗口中的位置
- 鍵盤快捷鍵:
- W:移動
- E:旋轉(zhuǎn)
- R:拉伸
- T:矩形拉伸輔助工具
注:這四個比較常用的Transform組件操作,也可以用在選定多個物體之后,批量進行操作
恭喜完成針對物體的操作課程!
三、常用功能與組件介紹與練習(xí)
在正式場景搭建前,還有一個功模塊Gizmo 導(dǎo)航器,需要學(xué)習(xí):
1、Gizmo 導(dǎo)航器
-
導(dǎo)航器位置
-
透視視圖與正交視圖
- Perspective 透視視圖:近大遠小
- Orthographic 正交視圖 :物體的顯示與距離無關(guān)。比如:一個立方體,離視野比較近的邊與離視野比較遠的邊的長度相等。
-
Scene窗口中的視圖是透視視圖還是正交視圖,可以在Gizmo 導(dǎo)航器中設(shè)置
- 注:Persp是透視視圖,再點擊一下,就會轉(zhuǎn)換成Iso正交視圖
-
三視圖
y軸:Top
z軸:Front
x軸:Right- 注1:在很多Unity開發(fā)中y軸默認是三維空間中的高度,z軸是默認是前進后退,是正面。x軸是側(cè)面
- 注2:點擊Gizmo中的哪個軸就切換到哪個視圖。
2、場景布置常用操作與組件
在正式開始布置場景前,還需要注意:如何復(fù)制物體、光照設(shè)置、主攝像頭、如何利用切換視圖搭建場景
(1)復(fù)制物體
- 選定物體后 ctrl+d
注:復(fù)制物體后,Scene窗口下的視圖可能沒有任何變化,這是因為二者重疊了。選定復(fù)制出來的物體,再移動一下就看到有兩個了。
(2)光照設(shè)置
- 亮度與顏色修改
在布置的時候,可能會感覺燈光太亮了,導(dǎo)致物體之間的分辨度很低。- Directional Light 屬性簡要介紹
注:一般情況,Light組件的屬性我們就只修改Intensity即可,也就是修改亮度。可以改到0.8,具體數(shù)值大家可以多嘗試一下,找出最合適的。
顏色則根據(jù)游戲當前的環(huán)境,進行調(diào)整,比如黃昏類的就可以設(shè)置偏黃一些。
- Directional Light 屬性簡要介紹
- 光照角度修改
注1:選定光源后,按E,然后視情況調(diào)整
注2:光源的位置,與大小,對光照效果沒有任何影響,只需要調(diào)整角度即可
(3)主攝像頭
- 手動調(diào)整主攝像頭位置以及角度
- 注:選定后調(diào)整transform組件里面的Position坐標和Rotation角度即可
- 將攝像頭位置與角度,改為Scene窗口視圖
- 選定主攝像頭后,Ctrl+Shift+F
- Field of View 視場視情況調(diào)整成,Ctrl+Shitf+F之后Scene窗口視圖與Game視圖無大的差異為主
注:視場可以類比為,攝像頭的焦距,越小,拍攝的圖像越近。
(4)利用切換視圖與角點吸附搭建場景
如何在只能看到二維的畫面情況下,搭建出完美符合自己審美要求的三維場景?三視圖!
a、不斷轉(zhuǎn)換視角搭建場景
- 以上視圖就是,先將透視視圖 轉(zhuǎn)換 成正交視圖,再點x軸轉(zhuǎn)換成各種xyz視圖,或在移動下視圖,看一下其他角度等等,然后移動Cube到合適位置
b、角點吸附搭建場景
- 按V的同時選定方塊上的某個角點按住開始拖拽,可以感受到,Cube移動不再是連貫的而是跳動的,目標從一個角點到另一個角點。松手之后,一開始選定的Cube的角點,就會和松手前選定吸附角點重疊。物體也就移動好了。
四、搭建游戲場景,諸葛亮的八卦陣!
1、保存搭建地圖參考圖
- 保存地圖參考圖
網(wǎng)絡(luò)上流傳的八卦陣圖紙
我們開始搭建場景吧,以第二個圖為主,中間的亭子就用一個膠囊體代替。
將第二個圖片,另存為在電腦里面
2、新建空對象并改名與地面
-
在Hierarchy窗口下創(chuàng)建九個Empty并改名如下
- 注1:鼠標移動到地面那一行,右鍵創(chuàng)建一個Cube,這樣Cube的層級就歸在地面下面了
- 注2:也可以在外面創(chuàng)建,然后拖拽新建的Cube到地面那一行,并松手也可以讓Cube成為地面的子對象
- 注3:將已經(jīng)是地面子對象的Cube拖拽到空的地方松手,就可以將其移出
3、將地圖參考圖 導(dǎo)入Unity3d項目
-
新建一個imgs的文件夾
-
將地圖參考圖 導(dǎo)入Unity3d項目
- 將方塊貼圖修改為圖片
- 最終成果圖如下
4、創(chuàng)建Cube按照地圖參考圖擺放
完成北面墻壁的效果圖如下:
- 搭建場景時Scene窗口的視圖修改為正交視圖。
- 主要使用操作:Ctrl+D 復(fù)制方塊 —》 W 移動方塊 —》T 拉長/壓縮方塊 —》Ctrl+D 復(fù)制方塊 —》 W 移動方塊 —》 …
當需要旋轉(zhuǎn)的時候就 E 旋轉(zhuǎn)方塊,按住V再利用角點吸附拼接方塊
最終圖如上
5、生成迷宮預(yù)制體
為了讓整個墻與地面成為一個整體,可以自由縮放,旋轉(zhuǎn)而不影響結(jié)構(gòu),我們需要將其制成一個prefab 預(yù)制體。
(1) 新建一個空物體命名為迷宮,并列入剛剛的建模模型
- 新建一個文件夾prefab
(2)將迷宮拖拽到prefab文件夾內(nèi)
迷宮預(yù)制體完成
注:預(yù)制體相當于一個自定義的一個結(jié)構(gòu),可以進行Unity自帶的立方體,橢圓,球一樣的操作。以后發(fā)射子彈,自動生成敵人等都需要用到這種技巧。
五、玩家創(chuàng)建
游戲地圖制備好了,第二步就是創(chuàng)建一個玩家Player。
玩家角色 是游戲的靈魂之一,單獨的場景無法與游玩的人進行交互。需要通過玩家這一身份與場景進行交互,這樣更有代入感一些。
1、玩家 Player!
我們就定義一個正方體為Player。當然也可以是其他的形狀,或者人什么的。
2、創(chuàng)建一個實現(xiàn)玩家移動控制功能的C#文件
-
創(chuàng)建一個叫Scripts文件夾
-
在Scripts文件夾內(nèi)創(chuàng)建C# Script
文件命名為:MoveControl(移動控制)
注:文件名字與類名字必須一致,如果創(chuàng)建文件后,只修改文件名就會報錯,需要兩個都改 -
編寫程序
從之前的學(xué)習(xí)可以看出,只要修改物體的Transform組件中的position屬性即可實現(xiàn),修改物體位置的效果。
綜上,編程目標:讓按鍵與修改目標物體的position屬性綁定,形成一個交互效果。- Start():該函數(shù)程序運行開始會運行一次
- Update():每次周期都會運行一次
所以初始化一般會放在Start中,每次都需要修改比如這次的移動控制則需要放在Update中
具體實現(xiàn)代碼以及注解如下:
using System.Collections;
using System.Collections.Generic;
using UnityEditor;
using UnityEngine;
public class MoveControl : MonoBehaviour
{
// Start is called before the first frame update
//注:所有的有小數(shù)的數(shù)字后面都要加f,表示是float數(shù)據(jù)類型
public float speed = 8.0f;
public float Rotatespeed = 60.0f;
void Start()
{
Application.targetFrameRate = 60;//設(shè)置幀率為60幀率
//注:設(shè)置幀率為60幀,表示游戲會盡量把幀率往60幀靠近,不是固定60幀
}
// Update is called once per frame
void Update()
{
KeyControl();
}
private void KeyControl()
{
//Translate是transform組件中自帶的修改自身position屬性的函數(shù),在原有的基礎(chǔ)上進行加處理
//Time.deltaTime :記錄每幀的用時
//distance(一幀 移動距離)=speed(速度) * Time.deltaTime(一幀時間)
//Translate(x,y,z,type):加的x,y,z值,由于一般設(shè)定z軸為前方,所以加z即可,Space.Self表示使用自身坐標系,這個下一章教材會講解
if (Input.GetKey(KeyCode.W))
{
this.transform.Translate(0, 0, speed * Time.deltaTime, Space.Self); //W 前進
Debug.Log(speed * Time.deltaTime);
}
if (Input.GetKey(KeyCode.S))
{
this.transform.Translate(0, 0, -speed * Time.deltaTime, Space.Self);//S 后退
}
//Rotate是transform組件中自帶的修改自身屬性的函數(shù),在原有的基礎(chǔ)上進行加處理
//逆時針為減法,順時針加法
//y軸是top,旋轉(zhuǎn)一般是人頭往左或往右,所以一般我們默認以y軸為旋轉(zhuǎn)軸
if (Input.GetKey(KeyCode.A))
{
this.transform.Rotate(0, -Rotatespeed * Time.deltaTime, 0,Space.Self);//A逆時針旋轉(zhuǎn)
}
if (Input.GetKey(KeyCode.D))
{
this.transform.Rotate(0, Rotatespeed * Time.deltaTime, 0, Space.Self);//A逆時針旋轉(zhuǎn)
}
}
}
3、將MoveControl腳本添加進Player
4、給Player添加剛體組件
5、第一人稱攝像頭設(shè)置
(1)讓攝像頭的position與Player的position一致
點擊Player的Position,然后Ctrl+C復(fù)制
然后再點擊Main Camera的Position Ctrl+V粘貼
完成!
(2)調(diào)整下攝像頭的角度與Field of View 視場
(3)令Main Camera成為Player的子對象
六、游戲音效添加
1、免費音樂資源網(wǎng)站推薦
https://www.aigei.com/music/class/romantic_3/
2、下載音樂,并將其加載進Unity中
- 新建一個musics的文件夾
- 將mp3文件拖入musics文件夾
加載成功!
3、添加游戲音效
- 新建一個Empty對象,并改名為游戲音效
- 點擊Add Component 添加 Audio Source組件
七、開始運行游戲與游戲?qū)С?/h3>
1、運行測試
- 玩家速度修改
修改Speed:影響玩家的速度
修改Rotatespeed:影響玩家的旋轉(zhuǎn)速度
2、游戲?qū)С?/h4>
File —> Build Settings
打開導(dǎo)出設(shè)置文章來源:http://www.zghlxwxcb.cn/news/detail-779471.html
八、結(jié)語
如果你能跟著做到這里,那么恭喜!Unity成功入門了,下一節(jié)將開始更深入的各項功能與組件的使用,以及實現(xiàn)各類基礎(chǔ)功能的腳本書寫練習(xí),模型導(dǎo)入與導(dǎo)出,最終實現(xiàn)一個使用Unity開發(fā)的星戰(zhàn)游戲Demo!
下期預(yù)告,星戰(zhàn)前夜!文章來源地址http://www.zghlxwxcb.cn/news/detail-779471.html
到了這里,關(guān)于從零開始的unity3d入門教程(二)----基本功能講解的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!