天天看點

在Unity3D中建構3D模拟,第3部分

歡迎來到這個由三部分組成的關于Unity 3D的部落格系列的最後一篇文章。 在本系列中,我們将在Unity3D中使用豐富的控件建立一個簡單的3D遊戲。 第一部分介紹了如何設定Unity3D ,第二部分介紹了如何 使用C#控制Unity3D 。

在本系列的最後一篇文章中,我們将深入研究如何使用Unity3D将代碼實際制作成一個簡單的遊戲。

讓我們開始吧

讓我們建立一些關卡,進行更多類似遊戲的動作和最終目标。

首先,讓我們添加一些要堅持的世界牆。 為此,我們将添加一堆多元資料集,并使用以前的實踐來将它們縮放和定位。

讓我們轉到Unity編輯器中的“場景視圖”。 單擊“層次結構視圖”(未選擇任何内容),然後建立另一個空對象。 清除其變換(0,0,0),然後将此對象命名為“世界”。

在Unity3D中建構3D模拟,第3部分

然後,我們要清除一些不再需要的舊對象。 讓我們删除為測試添加的白色立方體和球體。

在Unity3D中建構3D模拟,第3部分

現在,選擇“

World

對象”,讓我們添加一個多元資料集。 然後,将其位置和比例尺值更改為相等的位置0、2.5、0和比例尺10、5、1。這将使我們的牆長10個機關,高5個機關,寬1個機關。

在Unity3D中建構3D模拟,第3部分

現在,讓我們的場景錄影機定位為具有自頂向下的視圖。 單擊“場景視圖”右上角的綠色Y。

在Unity3D中建構3D模拟,第3部分
在Unity3D中建構3D模拟,第3部分

現在将牆旋轉90度并将位置設定為-5、2.5、5。

在Unity3D中建構3D模拟,第3部分

然後讓我們添加一堵牆的副本。 右鍵單擊它,複制,然後将其X位置設定為5。

在Unity3D中建構3D模拟,第3部分

選擇我們擁有的兩堵牆,然後再次複制它們。 選中這兩個選項後,我們将其Z位置值設為15。

在Unity3D中建構3D模拟,第3部分

仍然選擇它們,再次複制,并将它們移到Z位置25和X位置-10。

接下來,我們将使用一個新工具将它們一起旋轉。 在右上角有一組5個按鈕。 我們将選擇中間按鈕,然後将Y旋轉設定為0。

在Unity3D中建構3D模拟,第3部分
在Unity3D中建構3D模拟,第3部分

然後,我們将選擇Wall(4)使其比例尺X比例尺30變長。

在Unity3D中建構3D模拟,第3部分

然後選擇Wall(2)并将其比例X也設定為30。

在Unity3D中建構3D模拟,第3部分

然後選擇Wall和Wall(3),複制它們,并将複制品設定為X位置-15。

在Unity3D中建構3D模拟,第3部分

然後選擇Wall(2),複制它,并将其X位置設定為-25。

在Unity3D中建構3D模拟,第3部分

現在,使我們的速度與本課程更加友好。

在“層次結構視圖”中選擇“

Player

對象,然後在檢查器編輯器中編輯值“前進速度”和“旋轉速度”。 我喜歡5代表前進,50代表轉向。

在Unity3D中建構3D模拟,第3部分

現在讓我們為遊戲添加一個目标。 讓我們添加一個具有碰撞器的區域,該碰撞器在越過終點線時觸發。

首先讓我們添加完成區域。 我們将使用另一個多元資料集來設定邊界。 在沒有選擇任何内容的層次結構視圖中,通過右鍵單擊3D對象->多元資料集添加多元資料集。 我們将其命名為Finish,将其位置設定為-10、2.5、15,并将其比例設定為5、5、5。

在Unity3D中建構3D模拟,第3部分

接下來,讓我們給它新的材料。 在“資源”視窗中右鍵單擊,然後單擊建立->材質。 讓我們将其Albedo設定為00B6006B,然後将其渲染模式更改為“透明”。 這使其繪制透明。

在Unity3D中建構3D模拟,第3部分

然後,我們需要編輯

Finish Cube Collider

; 而不是添加到實體上,我們希望它禁用碰撞并僅觸發。 我們通過選擇

Finish

對象來

Finish

此操作,然後在Box Collider下的Inspector中,選中“ Is Trigger”。 這将使引擎觸發

OnTrigger

方法。

在Unity3D中建構3D模拟,第3部分

然後,将腳本添加到Finish對象中,以控制完成時發生的情況。 我們将其

FinishController

,然後在MonoDevelop

FinishController

其打開。 然後,我們添加一個新函數,然後在輸入對象時進行記錄。

void OnTriggerEnter(Collider collider){
	Debug.Log( “Finished” );
}
           
在Unity3D中建構3D模拟,第3部分

現在按播放。 我們應該能夠環遊世界并找到

Finish

立方體。 進入多元資料集後,我們應該能夠打開控制台視窗并看到消息“ Finished”。

在Unity3D中建構3D模拟,第3部分
在Unity3D中建構3D模拟,第3部分

現在,将其設定為在顯示屏上顯示一條消息以向使用者顯示,而不是僅記錄該消息。 我們将說他們完成了遊戲,然後添加了一個按鈕以重新啟動遊戲。

首先,我們需要将Text對象添加到我們的世界中。 轉到“層次結構視圖”,右鍵單擊,然後單擊“ UI =>文本”。 這将為我們的場景增加三件事:一是應在錄影機視口中顯示的文本對象,二是Canvas(即GUI後面的設定和層次結構),三是

EventSystem

,該事件系統可以引發和捕獲事件GUI就像拖放一樣。

在Unity3D中建構3D模拟,第3部分

在“場景視圖”中很難處理文本,是以讓我們切換到“遊戲視圖”。

在Unity3D中建構3D模拟,第3部分

現在,我們應該可以在右下角看到“新文本”字段。 讓我們在層次結構視圖中選擇Text對象。 在檢查器中,我們可以編輯文本。 将其位置設定為0、0、0,将寬度設定為500,将高度設定為500。将“文本”設定為“ You Finished”,格式為粗體,字型大小為80,顔色為紅色。

在Unity3D中建構3D模拟,第3部分

現在,讓我們打開

FinishedController Script

并添加一些代碼。 我們首先需要能夠通路UI庫。 是以,在腳本的頂部,我們需要使用

UnityEngine.UI

進行添加,然後添加一個

public Text finishedText

UnityEngine.UI

,以便可以通路我們的text元素。

在Unity3D中建構3D模拟,第3部分

現在回到編輯器。 讓我們單擊“完成”多元資料集對象,然後将“文本”對象拖到腳本的“完成文本”字段中。

在Unity3D中建構3D模拟,第3部分

現在,我們可以通路text元素。 要設定我們的文本,讓我們在

FinishedController

>

Start function finishedText.text = “”

編寫; 從某種意義上講,這将在我們運作遊戲時通過将文本保留為空白來隐藏文本。

在Unity3D中建構3D模拟,第3部分

現在,讓我們

OnTriggerEnter

函數,并添加代碼以在文本中寫上“ You Finished”。

在Unity3D中建構3D模拟,第3部分

現在按播放。 我們應該看到文本在遊戲開始時就消失了。 一旦找到飾面并跨入多元資料集,它将為您提供完成的文字。

在Unity3D中建構3D模拟,第3部分
在Unity3D中建構3D模拟,第3部分

現在讓我們做與文本相同的操作,但是這次添加一個按鈕。 選擇按鈕,然後在檢查器中,更改文本以重新啟動遊戲。 讓我們将其保留在預設位置。

在Unity3D中建構3D模拟,第3部分

現在,讓我們轉到

FinishController

并添加另一個公共UI元素public button

restartButton

在Unity3D中建構3D模拟,第3部分

然後傳回到“完成”對象的檢查器。 讓我們将按鈕拖動到

restartbutton

在Unity3D中建構3D模拟,第3部分

讓我們在啟動函數中添加一些代碼。 我們将希望隐藏代碼,以使我們無法一直看到它,還需要重置一些代碼。 首先,我們可以添加

restartButton.gameObject.SetActive(false)

隐藏,這将隐藏遊戲對象。 然後在

OnTriggerEnter

我們需要使用

restartButton.gameObject.SetActive(true);

将其反轉

restartButton.gameObject.SetActive(true);

在Unity3D中建構3D模拟,第3部分

然後在

FinishController

,添加一個名為

RestartGame()

的公共void函數。 這将是我們在按鈕

on click

控制器中調用的函數。 同樣在函數中,我們添加代碼以在按下場景時重新加載場景,使用

UnityEngine.SceneManagement;

在檔案頂部添加另一個using語句

UnityEngine.SceneManagement;

。 然後,将代碼添加到

RestartGame Function SceneManager.LoadScene(“Main Scene”);

。 它必須是您在字元串中調用場景的名稱,否則它将更改您的場景,而不是重新加載它(

Main.Scene

)。

在Unity3D中建構3D模拟,第3部分

現在,我們可以轉到“層次結構視圖”并選擇“按鈕”對象。 在檢查器中,底部有一個

On Click Controller

”。 我們隻想單擊+号并添加一個新的運作時。 然後,将

Finish

遊戲對象拖到下拉清單中,單擊

no

函數,然後選擇

FinishController

=>

RestartGame

在Unity3D中建構3D模拟,第3部分
在Unity3D中建構3D模拟,第3部分

現在玩吧。

您現在應該可以玩到遊戲結束。 觸發完成後,您應該會看到“您已完成”和“重新啟動遊戲”按鈕的消息。 如果您單擊“重新啟動遊戲”按鈕,它應該允許您再次播放。

在Unity3D中建構3D模拟,第3部分

包起來

結束!

現在,您應該能夠在帶有豐富控件的Unity3D中建立一個簡單的3D遊戲或應用程式。 請留下您的任何評論或問題。 謝謝閱讀!

翻譯自: https://www.javacodegeeks.com/2016/08/building-3d-simulations-unity3d-part-3.html