unity學習時做的小球吃方塊的實驗報告程序:
通過創建物件、添加腳本、控制相機跟隨、旋轉物件、碰撞檢測、顯示文本和發布程式七個實驗來對三維建模工具Unity 3D游戲建模程序中的場景、Plane、Sphere、Cube物件、腳本、碰撞檢測、UI以及程式發布等問題進行學習和練習,在實驗最后列出了Unity 3D的各個選單欄以及它們所包含的下拉選單及其譯名,
(超詳細全教程,保姆式教學包你學會)
實驗2.1 創建物件
實驗目的
1.掌握在Unity 3D中創建專案、場景、Plane和Sphere等,
2.掌握在Unity 3D中材質的應用,
實驗要求
學會在Unity 3D中創建專案、場景、Plane和Sphere,學會材質的應用,
實驗內容
【實驗2-1】創建PlayBall小球吃金幣游戲專案,創建地面和小球,
操作步驟:
1)新建專案,依次輸入專案名稱,選擇專案存盤路徑,如圖2-1所示,

2)點擊“Create project”創建專案進入Unity 3D界面,右上角“Layout”可修改布局,Unity 3D有多種布局,讀者可以根據自己的習慣選擇,下圖為“Layout”|“Tall”布局,本實驗截圖均為Tall布局,如圖2-2所示,

3)在“Project”視窗中新建檔案夾Scenes,存盤游戲場景,按“Ctrl+S”存盤當前游戲場景main,如圖2-3所示,

圖2-3新建Scenes檔案夾
4)在“Hierarchy”視窗中創建游戲地面,右鍵選擇“3DObject”|“Plane”,因為其為游戲地面,將其命名為Ground,如圖2-4所示,

圖2-4新建Plane物件
5)選中Ground物件,在“Inspector”視窗的“Transform”右側的齒輪選擇“Reset”,將地面物件放置在坐標系原點,如圖2-5所示,

圖2-5 選擇Reset
6)若想修改該地面物件表面顏色,需要為其添加材質,在“Project”視窗中新建檔案夾名為Materials,存盤材質,在Materials檔案夾中新建“Material”材質檔案,如圖2-6所示,

圖2-6 新建Material材質檔案
7)將“Material”命名為Ground,選中Ground材質,在“Inspector”視窗中修改“Albedo”顏色為淡藍色,如圖2-7所示,

圖2-7修改Albedo
8)將該材質與Plane進行關聯,將Ground材質用滑鼠左鍵拖動到“Hierarchy”視窗中的Ground物件上,如圖2-8所示,

圖2-8 將材質與Plane關聯
9)在“Hierarchy”視窗創建游戲主角小球物件,右鍵選擇“3D Object”|“Sphere”,并將其命名為Player,如圖2-9所示,

圖2-9 創建游戲主角小球物件
10)將小球物件放置在坐標系原點,選中小球Player物件,在“Inspector”視窗的“Transform”右側的齒輪選擇“Reset”,如圖2-10所示,

圖2-10將小球物件設定在原點
11)選擇移動按鈕,,向上拖動“y”軸綠色箭頭,將小球拖到地面上方,如圖2-11所示,

圖2-11將小球物件設定在地面上方
12)點擊播放按鈕查看游戲運行效果,如圖2-12所示,

圖2-12查看游戲運行效果
13)為小球添加重力,在“Hierarchy”視窗選擇小球Player物件,在“Inspector”視窗點擊最小面的“Add component”添加組件按鈕,添加“Rigidbody”剛體組件,如圖2-13所示,

圖2-13 添加Rigidbody剛體組件
14)點擊播放按鈕查看與沒加剛體組件時的區別,如圖2-14所示,

圖2-14 添加Rigidbody剛體組件后游戲運行效果
實驗2.2 添加腳本
實驗目的
1.掌握在Unity 3D中創建腳本的方法,
2.掌握在Unity 3D中修改物件的屬性,
實驗要求
學會在Unity 3D中創建腳本以及修改物件的屬性,
實驗內容
【實驗2-2】創建腳本使小球動起來,并用鍵盤控制小球的運動,
操作步驟:
1)為使小球運動起來,要為小球物件添加腳本檔案,在“Project”視窗中新建檔案夾Scripts,存盤腳本檔案,在“Hierarchy”視窗選擇小球Player物件,在“Inspector”視窗點擊最下面的“Add component”添加組件按鈕,輸入Player,選擇“New Script”,Language選擇默認的“C Shape”,點擊“Creat and Add”創建腳本檔案,如圖2-15所示,

圖2-15 為物件添加C Shape腳本
2)將Player腳本檔案拖入到Scripts檔案夾中,如圖2-16所示,

圖2-16 將Player腳本檔案拖入到Scripts檔案夾中
3)雙擊player腳本檔案,進入編輯器,本例進入的是Microsoft Visual Studio編輯器,如圖2-17所示,

圖2-17 進入Microsoft Visual Studio編輯器
4)為使小球運動起來,需要先得到小球剛體,并對剛體施加一個方向的力,具體代碼如下:
using UnityEngine;
using System.Collections;
publicclassplayer : MonoBehaviour {
privateRigidbody rd; //定義剛體物件
// Use this for initialization
void Start () {
rd = GetComponent<Rigidbody>(); //取得小球的剛體
}
// Update is called once per frame
void Update () {
rd.AddForce(newVector3(1, 0, 0)); //對小球剛體施加一個單位X軸正向的力
}}
5)點擊播放,查看小球運動狀態,如圖2-18所示,

圖2-18 小球向右滾動
6)將上例中的Vector3(1, 0, 0)修改為Vector3(-1, 0, 0)播放查看運動效果,或者修改為Vector3(0, 0, 1)和Vector3(0, 0, -1)分別查看效果,
7)用鍵盤控制小球的移動,需要先取得輸入,再通過輸入控制小球的移動,修改Update代碼:
Void Update () {
float h = Input.GetAxis("Horizontal");//取得鍵盤的水平輸入
rd.AddForce(new Vector3(h, 0, 0));
}
8)點擊播放,試著按鍵盤的左右方向或者“A”“D”鍵控制小球的水平方向移動,修改Update代碼,實作控制小球四個方向的移動
void Update () {
float h = Input.GetAxis("Horizontal"); //取得鍵盤的水平輸入
float v = Input.GetAxis("Vertical"); //取得鍵盤的垂直輸入
rd.AddForce(new Vector3(h, 0, v) * 5);
}
9)至此可以用鍵盤實作對小球的方向控制,若果想使小球運動的更快,可以對施加的力乘上系數,代碼如下:
rd.AddForce(new Vector3(h, 0, v) * 10); //對施加的力乘以系數
10)也可將力的系數設為公共變數,這樣隨時可以在Unity 3D頁面修改系數的值,代碼如下:
using UnityEngine;
using System.Collections;
public class Player : MonoBehaviour {
private Rigidbody rd;
public int force = 5; //定義公共變數force,為施加力的系數
// Use this for initialization
void Start () {
rd = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update () {
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
rd.AddForce(new Vector3(h, 0, v) * force); //對施加的力乘以系數
}
}
11)設定公共變數之后,在Player物件的“Inspector”視窗可以看到,player腳本中多了Force值,這樣隨時可以在Unity 3D頁面修改力的系數值,如圖2-19所示,

圖2-19 player腳本中多了Force值
12)增大游戲地面面積,在“Hierarchy”視窗選擇Ground物件,在“Inspector”視窗的“Transform”中修改“Scale”值,將X、Z都修改為2,如圖2-20所示,

圖2-20 增大地面面積
實驗2.3 控制相機跟隨
實驗目的
1.掌握在Unity 3D中移動和選擇物件等操作,
2.了解在Unity 3D中控制相機跟隨的方法,
實驗要求
學會在Unity 3D中移動和選擇物件等操作及了解控制相機跟隨的方法,
實驗內容
【實驗2-3】控制相機跟隨小球移動,
操作步驟:
1)點擊移動按鈕,選擇相機物件,向上拖動“Y”軸,將其拖動到稍高一點的位置,每次調整相機時,在右下角會出現相機預覽圖,以便觀察其視野,如圖2-21所示,

圖2-21移動相機位置
2)點擊旋轉按鈕,旋轉相機角度,使其面向小球,如圖2-22所示,

圖2-22 旋轉相機角度
3)若想相機跟隨小球運動,需要為相機添加腳本,在“Hierarchy”視窗選擇“Main Camera”物件,在“Inspector”視窗點擊最小面的“Add component”添加組件按鈕,輸入follow,選擇“New Script”,選擇默認的“C Shape”語言,點擊“Creat and Add”創建腳本檔案,如圖2-23所示,

圖2-23創建follow腳本
4)將follow腳本拖入到Scripts檔案夾中,若想相機跟隨小球運動,需要相機與小球的距離保持不變,首先,在follow腳本中要取得小球的位置資訊,代碼如下:
using UnityEngine;
using System.Collections;
public class follow : MonoBehaviour {
public Transform playerTransform; //定義公共變數記錄小球的位置資訊
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
}
}
5)公共變數定義好后,在“Main Camera”物件的“Inspector”視窗可以看到,follow腳本中多了playerTransform,將“Hierarchy”視窗中的小球Player物件拖到playerTransform上,使playerTransform系結小球的位置資訊,如圖2-24所示,

圖2-24 創建follow腳本
6)取得小球的位置資訊后,添加代碼實作相機跟隨小球移動,代碼如下:
using UnityEngine;
using System.Collections;
public class follow : MonoBehaviour {
public Transform playerTransform; //定義公共變數記錄小球的位置資訊
private Vector3 offset; //定義相機和小球之前的距離
// Use this for initialization
void Start () {
offset = transform.position - playerTransform.position; //計算相機和小球之間距離
}
// Update is called once per frame
void Update () {
transform.position = playerTransform.position + offset; //保持距離
}
}
實驗2.4 旋轉物件
實驗目的
1.掌握在Unity 3D中創建cube物件,
2.了解在Unity 3D中旋轉物件的方法,
實驗要求
學會在Unity 3D中創建cube物件并了解旋轉物件的方法,
實驗內容
【實驗2-4】控制小球移動范圍并加入可旋轉的金幣,
操作步驟:
1)創建地面邊界墻,在“Hierarchy”視窗創建cube物件,右鍵選擇“3D Object”|“Cube”,選中cube物件,在“Inspector”視窗的“Transform”中修改“Position”的X、Y、Z為0,0,10,“Scale”的X、Y、Z為20,2,1,如圖2-25所示,

圖2-25 創建一個地面邊界墻
2)在“Hierarchy”視窗選中cube物件,按“Ctrl+D”復制cube物件,分別創建其他三面墻體,三面墻體的“Transform”引數分別為(PositionX、Y、Z為0,0,-10,ScaleX、Y、Z為20,2,1)、(PositionX、Y、Z為10,0,0,ScaleX、Y、Z為1,2,20)、(PositionX、Y、Z為-10,0,0,ScaleX、Y、Z為1,2,20),如圖2-26所示,

圖2-26 創建四個地面邊界墻
3)在“Hierarchy”視窗中,將創建好的四個cube墻體物件拖動到Ground物件上,形成父子關系,如圖2-27所示,

圖2-27 形成父子關系
4)創建可收集的金幣,在“Hierarchy”視窗新建cube物件,命名為Pickup,選中cube物件,在“Inspector”視窗的“Transform”中修改“Rotation”的X、Y、Z為45,45,45,“Scale”的X、Y、Z為0.5,0.5,0.5,如圖2-28所示,

圖2-28 新建金幣
5)點擊Local按鈕,切換成全域坐標系,調整該cube物件的高度,使其立在地面上,如圖2-29所示,

圖2-29金幣立在地面之上
6)在Materials檔案夾中新建Material,將Material命名為Pickup,選中Pickup材質,在“Inspector”視窗中修改“Albedo”顏色為金色,并將該材質與Pickup物件關聯,如圖2-30所示,

圖2-30為金幣設定材質
7)因為還要創建很多個Pickup物件,所以把Pickup物件做成預制體,在“Project”視窗中新建檔案夾Prefabs,存盤預制體,將“Hierarchy”視窗中的Pickup物件用滑鼠左鍵拖動到該檔案夾內,如圖2-31所示,

圖2-31 預制體
8)將Prefabs檔案夾中的Pickup物件拖入到左側的舞臺上,調整高度,使其立于地面上,選中Pickup物件,并按“Ctrl+D”復制多個,調整位置,如圖2-32所示,

圖2-32 復制金幣并調整位置
9)在“Hierarchy”視窗中,創建空的游戲物體“Create Empty”,并將該游戲物體放到原點,將所有的Pickup放到該物體上,如圖2-33所示,

圖2-33 將所有的Pickup放到Pickups上
10)為了使所有的Pickup都旋轉,選擇“Project”視窗下Prefabs檔案夾中的Pickup,在“Inspector”視窗點擊最小面的“Add component”添加組件按鈕,輸入pickup,選擇“New Script”,選擇默認的“C Shape”語言,點擊“Creat and Add”創建腳本檔案,并將該腳本放在Scripts檔案夾下,如圖2-34所示,

圖2-34 將腳本放在Scripts檔案夾下
11)雙擊進入該腳本,添加如下代碼,使金幣旋轉起來,
using UnityEngine;
using System.Collections;
public class pickup : MonoBehaviour {
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
transform.Rotate(new Vector3(0, 1, 0)); //使物件繞y軸旋轉
}
}
12)點擊播放,游戲運行如圖2-35所示,

圖2-35金幣旋轉效果
實驗2.5 碰撞檢測
實驗目的
1.掌握在Unity 3D中為物件設定標簽,
2.了解在Unity 3D中碰撞檢測的方法,
實驗要求
學會在Unity 3D中為物件設定標簽以及了解碰撞檢測的方法,
實驗內容
【實驗2-5】實作小球吃掉金幣效果,
操作步驟:
1)為了檢測小球碰撞到金幣還是墻體,為金幣Pickup物件設定標簽,選擇“Project”視窗下Prefabs檔案夾中的Pickup,在“Inspector”視窗“tag”下拉選單中選擇“Add Tag”,如圖2-36所示,

圖2-36 tag下拉選單中選擇Add Tag
2)進入如圖2-37界面,

圖2-37 Add Tag界面
3)點擊“+”,添加標簽Pickup,如圖2-38所示,

圖2-38 添加標簽Pickup
4)再次選擇“Project”視窗下Prefabs檔案夾中的Pickup,在“Inspector”視窗“tag”下拉選單中選擇Pickup,如圖2-39所示,

圖2-39 tag下拉選單中選擇Pickup
5)為了實作小球碰撞金幣使金幣消失,打開Player腳本,修改代碼如下:
using UnityEngine;
using System.Collections;
public class player : MonoBehaviour {
private Rigidbody rd;
public int force = 5;
// Use this for initialization
void Start () {
rd = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update () {
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
rd.AddForce(new Vector3(h, 0, v) * force);
}
void OnCollisionEnter(Collision collision) {//碰撞檢測函式
if(collision.collider.tag == "Pickup") {//判斷小球是否碰到金幣
Destroy(collision.collider.gameObject); //使金幣消失
}
}
}
6)運行游戲效果如圖2-40所示,

圖2-40 小球碰撞金幣效果
7)游戲運行后發現,在碰撞金幣使金幣消失時,會有撞到物體的反彈效果,如果不想要這種效果,首先選擇“Project”視窗下Prefabs檔案夾中的Pickup,在“Inspector”視窗“Box Collider”中,勾選“Is Trigger”,如圖2-41所示

圖2-41 Box Collider界面
8)修改Player腳本如下:
using UnityEngine;
using System.Collections;
public class player : MonoBehaviour {
private Rigidbody rd;
public int force = 5;
// Use this for initialization
void Start () {
rd = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update () {
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
rd.AddForce(new Vector3(h, 0, v) * force);
}
void OnTriggerEnter(Collider collider) //檢測接觸
{
if(collider.tag == "Pickup")
{
Destroy(collider.gameObject);
}
}
}
實驗2.6 顯示文本
實驗目的
1.了解在Unity 3D中UI的使用方法,
實驗要求
了解在Unity 3D中UI中Text控制元件的使用方法,
實驗內容
【實驗2-6】在小球吃掉金幣時顯示分數以及吃光所有金幣后顯示勝利,
操作步驟:
1)如果想在小球吃掉金幣時加分,并實時顯示分數,修改Player代碼如下:
using UnityEngine;
using System.Collections;
public classplayer : MonoBehaviour {
private Rigidbody rd;
public int force = 5;
private int score = 0; //定義分數變數
// Use this for initialization
void Start () {
rd = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update () {
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
rd.AddForce(new Vector3(h, 0, v) * force);
}
void OnTriggerEnter(Collider collider)
{
if(collider.tag == "Pickup")
{
score++; //每次接觸金幣對分數加1
Destroy(collider.gameObject);
}
}
}
2)若想在游戲時顯示分數,需要加入UI,在“Hierarchy”視窗中,右鍵“UI”|“Text”,切換到2D顯示,如圖2-42所示,

圖2-42 2D顯示
3)選擇Text物件,在“Inspector”視窗“Rect Transform”中,點擊左側方框,按住“Alt”鍵,選擇左上角的方框,如圖2-43所示,

圖2-43 Text控制元件布局
4)調整Text位置,將其向右下稍微調整,游戲運行,效果如圖2-44所示,

圖2-44 顯示Text
5)為了在Text物件中顯示分數,需要將Text物件與Player腳本關聯,修改Player腳本代碼如下:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class player : MonoBehaviour {
private Rigidbody rd;
public int force = 5;
public Text text; //定義Text公共變數,準備關聯Text物件
private int score = 0;
// Use this for initialization
void Start () {
rd = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update () {
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
rd.AddForce(new Vector3(h, 0, v) * force);
}
void OnTriggerEnter(Collider collider)
{
if(collider.tag == "Pickup")
{
score++;
Destroy(collider.gameObject);
}
}
}
6)在Player物件的腳本中會出現Text,將Text物件拖入到Text后面的框中,如圖2-45所示,

圖2-45 將Text物件拖入到Text后面的框中
7)通過拖動已經在Player中取得了Text物件,然后將分數傳遞給Text,修改Player代碼如下:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class player : MonoBehaviour {
private Rigidbody rd;
public int force = 5;
public Text text;
private int score = 0;
// Use this for initialization
void Start () {
rd = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update () {
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
rd.AddForce(new Vector3(h, 0, v) * force);
}
void OnTriggerEnter(Collider collider)
{
if(collider.tag == "Pickup")
{
score++;
text.text = score.ToString(); //將分數賦值給Text
Destroy(collider.gameObject);
}
}
}
8)運行游戲,效果如圖2-46所示,

圖2-46 小球吃金幣效果
9)當把所有金幣都吃掉后,顯示游戲勝利,在“Hierarchy”視窗中,在“Canvas”上右鍵“UI”|“Text”,再創建一個Text用來顯示勝利資訊,如圖2-47所示,

圖2-47 新建Text(1)
10)選擇調整按鈕
調整Text(1)物件的大小,在Text(Script)中修改Text(1)的一些屬性,如圖2-48所示,

圖2-48 Text(Script)界面
11)在“Inspector”視窗中取消Text(1)前面的對號,使其在游戲剛開始運行時不顯示,如圖2-49所示,

圖2-49 在Inspector中取消Text(1)前面的對號
12)用同樣的方法關聯Player和Text(1)物件,并修改Player腳本的代碼如下:
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class player : MonoBehaviour {
private Rigidbody rd;
public int force = 5;
public Text text;
private int score = 0;
public GameObject winText; //定義存放勝利訊息的Text
// Use this for initialization
void Start () {
rd = GetComponent<Rigidbody>();
}
// Update is called once per frame
void Update () {
float h = Input.GetAxis("Horizontal");
float v = Input.GetAxis("Vertical");
rd.AddForce(newVector3(h, 0, v) * force);
}
void OnTriggerEnter(Collider collider)
{
if(collider.tag == "Pickup")
{
score++;
text.text = score.ToString();
if(score == 12)
{
winText.SetActive(true); //如果全部金幣(本例為12個)全部吃完,顯示勝利訊息
}
Destroy(collider.gameObject);
}}}
13)在Player物件的腳本視窗中會出現winText,將Text(1)物件拖入到winText后面的框中,如圖2-50所示,

圖2-50 Player物件的腳本視窗
14)運行游戲,當吃光所有金幣后效果如圖2-51所示,

圖2-51 吃光所有金幣顯示勝利
實驗2.7 發布程式
實驗目的
1.掌握在Unity 3D中發布程式的方法,
實驗要求
掌握在Unity 3D中發布程式的方法以及運行發布后的程式,
實驗內容
【實驗2-7】發布PlayBall的Windows程式并運行該程式,
操作步驟:
1)發布windows平臺的exe游戲,點擊“File”|“Build Setting”,如圖2-52所示,

圖2-52 Build Setting界面
2)選擇“PC,Mac&Linux…”,選擇“TargetPlatform”|“Windows”,“Architecture”中x86為32位作業系統應用程式,x64為64位應用程式,根據實際情況選擇即可,點擊“Build”即可發布程式,
3)運行exe檔案運行游戲,如圖2-53所示,

圖2-53 游戲運行開始界面
4)勾選Windows,點擊“Play”運行游戲,如圖2-54所示,

圖2-54 PlayBall游戲界面
附Unity 3D的各個選單欄以及它們所包含的下拉選單及其譯名
主選單 包含的子選單








轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/275547.html
標籤:其他
