Blender 3D: 從新手到高手/迷宮遊戲引擎教程
|
|
適用 Blender 版本:2.49。 |
本教程旨在以遊戲的形式,對 Blender 遊戲引擎進行中級介紹,它是平臺遊戲:建立與控制的續篇。它需要你熟悉 Blender 的 UI,簡單的命令(比如用AKEY選擇)和基本的建模技能。我們將在 Blender 中建立的遊戲將具有以下特性
- 一個由 WASD 鍵控制的主角
- 一個沒有牆壁的迷宮表面
- 掉出迷宮會死亡
- 多個關卡
- 動態障礙物
- 迷宮中有一個目標,它會把你傳送到下一關
本教程是為 2.44 版本編寫的,並且已在所有更高版本(截至 2008 年 4 月)中測試過
現在我們來製作迷宮。當你建立迷宮表面的路徑時,請記住你需要一個起點和一個目標。

- 清空場景;選擇所有(AKEY),刪除選定專案(XKEY → ENTER)
- 進入頂檢視 (NUM7)
- 新增網格 (SPACE → 新增 → 網格 → 網格) 具有 X 和 Y 解析度為 16
- 將網格縮放 24 倍 (SKEY,輸入 24,ENTER)
- 選擇網格後進入編輯模式 (TAB)
- 進入面選擇模式 (CTRL+TAB → 面)
- 開始選擇面以製作二維迷宮(使用BKEY繪製選擇框)
- 選擇面後,複製這些面 (SHIFT+D,RMB)
- 將這些面移開原始網格 (GKEY 或移動小部件 CTR+ALT+GKEY)
- 刪除原始網格
- 使用GKEY或在編輯按鈕 (F9) 的“網格”面板中按下“居中”按鈕來居中迷宮
你現在應該有一個二維迷宮。在遊戲引擎中,我們只看到每個面的一個側面,所以這個迷宮從下面看時將不會出現,而從迷宮表面本身看時將明顯是二維的。這是不可取的,因此我們將透過向下擠出迷宮表面來使我們的迷宮三維化。

- 進入側檢視 (NUM3)
- 選擇所有面 (AKEY)
- 向下擠出,-1 個單位 (EKEY → 區域),按住 CTR 以限制為 1 個單位增量,或者手動輸入值 -1,就像你在開始時縮放網格一樣。
- LMB 接受操作,或 RMB 取消面的移動。如果你取消了它,面將會擠出,但只是不會移動。你可以撤銷操作 (CTRL+Z),或刪除你已擠出的頂點/面 (WKEY → 移除重複)。
你的迷宮現在已經完成了,只缺少一個被困在裡面的人……

我們將建立一個非常基本的角色,足以說明本教程中要傳達的概念。你可以根據自己的意願製作一個複雜或基本的角色,但重要的是始終在你的主角上有一個方向指示器,否則玩家可能會感到困惑。所以,我們將使用一個帶有“鼻子”的原始體(即一個從物件中心擠出的面或頂點,以便提供一個旋轉參考點)。在本教程中我將使用一個圓錐體,僅僅因為它們不太容易滾動。

- 進入頂檢視 (NUM7)
- 新增圓錐體 (SPACE → 網格 → 圓錐體,使用預設值)
- 選擇圓錐體並進入編輯模式 (TAB)
- 進入面選擇模式 (CTRL+TAB → 面)
- 選擇圓錐體側面上的一個面
- 將它擠出大約 1/4 個單位或更少 (EKEY)
- 合併擠出的面以使鼻子尖銳 (WKEY → 合併 → 在中心)
- 進入物件模式 (TAB)
- 旋轉圓錐體,使鼻子與正 Y 軸對齊 (RKEY,與綠色箭頭對齊)
你現在已經有了你的角色(不是那種皮克斯風格的,但目前夠用了)。現在我們只需要給它動力。
注意:從第 8 點到第 9 點,似乎圓錐體應該旋轉,使其“鼻子”與物件模式下的 Y 軸對齊,但在完成此操作後,我發現圓錐體仍然在原始 Y 軸方向(在旋轉之前)移動。為了解決這個問題,我改為在編輯模式下進行“鼻子”與 Y 軸的對齊,這似乎解決了問題。
現在我們將透過使用 WASD 鍵來使角色移動。為了做到這一點,遊戲邏輯需要與 WASD 鍵相關聯。複製螢幕截圖中看到的配置,注意要包括左上角的凸包多面體碰撞,以及按下“L”按鈕,這使得力矩和轉矩相對於該物件而不是全域性的。如果力是全域性的,主角將繼續沿直線移動,即使轉彎也是如此。
- 轉到邏輯按鈕(紫色吃豆人圖示或F4)
- 新增四個感測器、控制器和執行器。
- 最大化邏輯視窗 (CTRL+UPKEY)
- 複製下面螢幕截圖中看到的配置。
(注意:我使用 Actor->Dynamic 進行模擬,因為在 2.49b 中無法同時使用動態和剛體。經過一些測試,它似乎執行正常。)
dLoc/dRot 與 力/轉矩
本教程中的角色邏輯與之前平臺遊戲邏輯非常相似,但不同之處在於它使用力矩和轉矩,而不是分別使用 dLoc 和 dRot。這兩個之間的區別是,力和轉矩在子彈物理引擎中移動和旋轉物件,在過程中應用摩擦和碰撞,而 dLoc 和 dRot 移動和旋轉物件而不考慮任何其他“actor”(計算到物理引擎計算中的物件)。雖然 dLoc 和 dRot 會在大多數迷宮遊戲中起作用,但許多其他情況需要力和轉矩。然而,大多數這些情況發生在更復雜的遊戲中,這些遊戲與動態物件的互動很多。在本教程的後面,我們將向迷宮新增動態物件,使用力的原因將變得清晰。
現在是時候對我們的遊戲進行第一次測試了。
- 在迷宮上方新增一個光源 (SPACE → 燈 → 燈),在正面檢視 (NUM1) 中對齊
- 按下NUM5進入透視檢視模式,它提供一個真實的檢視,而不是物件隨距離保持相同大小的檢視。確保你在編輯時切換回正投影檢視 (NUM5)
- 進入紋理模式 (ALT+ZKEY) -- 按下 ZKEY 切換回實體檢視模式
- 切換到頂檢視 (NUM7) 或攝像機檢視(在我們安裝攝像機後) (NUM0)
- PKEY 開始遊戲
- ESC 退出遊戲測試
如果你收到“沒有攝像機”錯誤,請忽略它。我們稍後會新增攝像機。
如果你的角色根本沒有移動,請確保你在邏輯面板中繪製了執行器之間的連線“線”,以及將“Actor”的“Dynamic”和“Rigid Body”按鈕設定為 True。
你現在應該有一個在迷宮中快速移動的圓錐體。
(新手問題 1:我的圓錐體在我不按 A 或 D 的情況下自行旋轉。它還喜歡在迷宮表面尋找隱藏或不存在的凸起。我該如何解決?)
(NQ1 的答案:如果我理解你的問題。如果我使用扭矩來旋轉,使用力來向前移動,並按下向前,然後轉彎,它就開始失控旋轉。我的解決方案是使用旋轉而不是扭矩。)
新手問題 2:圓錐體直接穿過了迷宮。我該如何讓迷宮阻擋圓錐體?
NQ2 的答案:首先,確保你的圓錐體在遊戲引擎啟動之前沒有完全或部分進入迷宮。其次,選擇你的圓錐體(在我的示例中命名為“主角”,然後回到屬性視窗中的“物理”屬性。如果你沒有看到屬性視窗,請按N 鍵,並在螢幕右側查詢。在“物理型別”下,確保在下拉選單中選擇了“動態”或“剛體”。然後,向下滾動到“碰撞邊界”,並勾選該框。你還可以從“邊界”下拉選單中選擇一個形狀,例如“圓錐體”。
墜落
[edit | edit source]我們現在將實現“從迷宮中掉落時死亡”功能。為了實現這一點,我們將新增一些內容,讓我們能夠檢查圓錐體是否從迷宮中掉落。最簡單的方法是使用一個包含整個迷宮的“天空穹頂”物件,雖然有一些更優雅的方法可以實現目標,但我們將使用天空穹頂方法,因為它簡單易懂。從現在起,我們需要用啟用的一層和二層(SHIFT+2 鍵)來測試迷宮。
- 新增一個新的立方體
- 將其調整為巨大比例(S 鍵,只要大到足以包含迷宮及其內部即可)
- 可選:將其移動到第二層(M 鍵,2 鍵,回車鍵)
現在你已經有了巨大的立方體,轉到邏輯面板,新增一個感測器、控制器、執行器集,並將它們設定為螢幕截圖所示。
- 感測器:觸控,在“屬性”下輸入你的角色名稱(這裡為“主角”)
如果主角(並且只有主角)碰到地面,這將重啟場景。
- 控制器:並且
- 執行器:場景,重啟
- 屬性:物理(左側最後一個圖示),啟用執行器按鈕以及“幽靈”和“不可見”
這將允許動態障礙物(稍後新增)穿過並不會卡在那裡!
如果你現在測試遊戲,你會看到當你從迷宮中掉下來時遊戲會重啟。正如我們之前討論的,遊戲引擎中的面是一面的,所以你應該看不到立方體。
(新手問題 1:當我這樣做時,我的圓錐體一直掉下來。當我將立方體移回第一層時,它工作正常。我是否遺漏了什麼?) (新手說明:好吧,我每次都遇到同樣的問題,只是在第一層,但當我在第一層時,我只是不斷掉下來)
(答案:教程說要建立第二層的立方體,但層級並不重要。確保你在選擇了一層和二層的情況下測試遊戲。還要仔細檢查“天空立方體”的邏輯)
(答案 2:我遇到了同樣的問題。我透過用網格替換立方體解決了這個問題,網格的比例和位置都在迷宮下方。網格具有上面提到的觸控邏輯。)
(答案 3:這裡也是一樣。我以為我會從材質引用中移除“主角”,但這行不通,如果磚塊掉下來碰到立方體,它只會重啟關卡……解決方案:在圓錐體中建立一個屬性,一個名為“isCone”的布林值(=true),然後在立方體中新增一個“碰撞”感測器,它會檢查物件的屬性“isCone”,並將其餘部分保持為所示。)
(答案 4(當塊碰到立方體時重啟):按照圖片所示操作,右鍵單擊圓錐體,轉到連結和管道,並將 MA: 重新命名為圓錐體或你想要的任何名稱,然後右鍵單擊立方體,然後在觸控感測器中,將 MA: 重新命名為你呼叫另一個 MA: 的任何名稱。:D 這是在 24.9b 中)
(答案 5:對於 Blender 2.57a,你需要在迷宮下方放置一個平面或其他東西。然後賦予它(觸控 -> 並且 -> 場景(重啟))遊戲邏輯。如果它不起作用,請確保在物理選項卡下選擇了執行器。)
(問題 2:我該如何讓盒子半透明?現在我所看到的,包括測試時,只有天空盒。此外,當我將盒子放在迷宮下方時,它工作正常,但所有物體都沒有陰影,而當不顯示第二層時,所有物體都有陰影。誰能提供解決方案?這是在 2.48a 中)
(答案:要使某個東西透明,請按F5;按“材質按鈕”按鈕;在連結和管道選項卡下,按光暈和 Z 透明度,取消選中陰影緩衝;在材質下,將 A 設定為 0.000。)
死亡地面
[edit | edit source]為了給你的遊戲增加緊張感,你可以讓地面動起來。它會隨著時間推移而升起!
- 新增一個靜態平面,並將其邏輯面板設定為上面所述。
- 新增一個始終感測器,將其連線到一個並且控制器,然後將其連線到一個運動執行器,該執行器具有 0.01 的垂直線性速度(沿 z 軸)。

這樣它就會慢慢升起。為了讓玩家清楚地看到地面在升起,更改其顏色(例如藍色代表水),並使其再次可見。
你剛剛給你的遊戲添加了一些緊張感!如果你時間不夠,你會碰到地面並重啟!如果你需要更多時間,只需設定一個更低的垂直線性速度即可。
相機
[edit | edit source]空格鍵 → 相機靠近主角圓錐體。有兩種簡單的方法可以實現相機:邏輯相機和子相機。在這種情況下,你可能更適合使用邏輯相機,但這確實是一個個人喜好問題。
- 邏輯相機:新增到相機的邏輯面板
- 感測器:始終
- 控制器:並且
- 執行器:相機,到物件“圓錐體”(或你的主角的任何名稱——當你選擇主角時,請檢視物件面板下的內容)高度 5,最小 5,最大 10。
- 子相機:選擇相機,然後選擇主角(順序很重要),然後按CTRL+P 鍵將圓錐體繫結到相機。將相機對準你喜歡的視角,並測試遊戲。
- 第一人稱相機:好吧,這個不算是一種新方法,但如果你願意重新設計你的運動,讓它只移動相機而不是角色(只需對相機執行你對角色執行的所有操作),你就可以以第一人稱四處走動。或者你可以將相機放在圓錐體中,因為其中一面始終是不可見的(在紋理模式下檢視),並將相機繫結到圓錐體。記住:要訪問遊戲中的相機(在遊戲過程中),在你開始之前,按 ctrl 0 或轉到(檢視 -> 相機)
(新手問題 1:無論我做什麼(甚至刪除相機!),當我按下 0 或 ctrl+0 時,我總是看到要麼只有死亡平面(我在迷宮下方使用了一個平面而不是周圍的立方體),要麼什麼都沒有,具體取決於我是否選擇了第二層。根據 Oops 圖表,只有一個相機(或者沒有,如果我刪除了它)。出了什麼問題?)
(答案:Ctrl+0 將選定的物件分配為相機。要解決你的問題,請選擇你的相機並按 ctrl+0,要進入相機檢視,請按 0)
美化
[edit | edit source]Blender 是一款出色的 3D 建模軟體,它擁有大量工具供你使用,因此你應該能夠使你的遊戲比這個看起來更好。

我們將在每個物件上新增一個或兩個紋理。
- 選擇你要紋理化的物件
- 如果你希望你的物件有多種顏色,請進入編輯模式
- 選擇你要分配顏色的所有面(CTRL+TAB → 面)
- 轉到編輯面板(F9),位於按鈕視窗上
- 在左側附近應該有一個面板,上面寫著“材質”。單擊螢幕截圖中突出顯示的按鈕
- 透過單擊“漫反射”下的白色欄位來調整該材質的顏色。會顯示一個顏色選擇器。選擇你喜歡的顏色!
霧
[edit | edit source]現在它看起來好多了,但當相機幾乎處於水平狀態時,你可以看到相機在哪裡停止渲染迷宮。你可以透過選擇相機,並在其編輯按鈕中更改其裁剪範圍來解決這個問題……但有一個更好的方法。霧。

霧會模糊一定距離之外的所有東西,顏色與世界紋理相同,並且可能很方便。我們將為我們的遊戲新增一些霧,這樣玩家就不會看到太遠的地方,從而使遊戲變得過於容易。
我們將使霧非常靠近,雖然你可以改變距離。轉到材質按鈕,然後轉到世界子按鈕,然後複製螢幕截圖中的設定。當你測試它時,請確保你處於紋理模式,以便看到霧。
(問題:我複製了螢幕截圖,但我無法使霧生效。發生了什麼事?)
(答案:將“開始”更改為較小的值,例如 15。)
(問題:螢幕截圖是否正確,或者我的尺寸是否不同。我發現 10 的霧距離幾乎不可見,而 1 的距離卻有更好的效果。這是正常的嗎?)
(問題:我已經成功建立了霧,並且在啟動遊戲時可以看到它,但背景顏色仍然是灰色,所以迷宮被遮住了,但其他所有地方仍然是灰色。
關卡
[edit | edit source]現在,剩下的就是建立下一關,並新增一些障礙物。
- 在迷宮的盡頭新增一個立方體,正好在地板水平線上方,這樣圓錐體就可以碰到它(空格鍵 → 新增 → 網格 → 立方體)
- 按場景下拉選單,選擇“新增新”→ 完整複製
- 現在可以返回到迷宮表面部分建立新的迷宮網格。
- 透過場景選單返回到第一級。
- 選擇關卡結束立方體。
- 更改其邏輯面板以使其類似於以下內容。
- 感測器:接觸,coneMat
- 控制器:並且
- 執行器:場景,設定場景,Scene.001(或你命名的第二級名稱)
(新手:當我進入第二級時,我的玩家名稱變為coneMat.001,我不得不更改所有目標和大型重新開始立方體的分配。答案:將coneMat.001 重新命名為你為第一個場景命名的材質名稱 - 這對我來說解決了問題。
(新手:在我的第二級,我的圓錐體擊中立方體,但沒有任何反應!答案:確保邏輯面板(F4)下的感測器、控制器和執行器選項卡透過線連線。
(新手:當我進入第二級時,我什麼也看不見!

為了使多個物件必須被觸碰(或被角色獲取,可能的話),為每個物件賦予上面描述的邏輯設定,並將執行器型別更改為帶有主題“goalget”的訊息。如果你想讓物件在被收集後消失,在物件的邏輯面板中新增一個型別為“結束物件”的編輯物件執行器,並將它連結到現有的AND控制器。
接下來,選擇與角色接觸時重新開始關卡的大型立方體。如果你選擇不包含這樣一個立方體,在關卡開始時建立一個空物體(這樣你以後可以很容易地找到它)。為立方體或空物體賦予以下邏輯運算子。
- 感測器:訊息,goalget
- 控制器:並且
- 執行器:屬性,新增,wincon,-1
- 感測器:屬性,等於,wincon,0
- 控制器:並且
- 執行器:場景,設定場景,Scene.001(或你命名的第二級名稱)
然後點選“新增屬性”,並賦予它型別Int,名稱wincon,以及一個等於完成關卡所需收集物件的數量的值(如果全部都需要,則使其等於關卡中包含的數量)。這可以擴充套件到包括除收集物品之外的其他多種獲勝條件,方法是使每個條件的完成從“wincon”中減去。
你現在擁有了一個多級迷宮遊戲。可以隨意擴充套件遊戲玩法機制和模型,使它們看起來更好。
新手提示:我在我認為所有東西應該去的地方輸入了,但它沒有做任何事情。我不確定在遊戲模式下我應該尋找什麼。
本教程的這一部分將假設你已具備更高階的Blender介面和基本命令知識。因此,本節將以更少的具體方式撰寫,所有基本命令的快捷方式將不會在此處介紹。從現在開始,本教程將達到中級水平。如果你無法理解本教程的這一部分,可以在之前的教程中學習下面使用的基本功能。
現在我們將新增一些動態障礙。在本例中,它們將構成一個“磚塊”牆,你的角色可以穿過它。
- 新增一個立方體。
- 在編輯模式下將其縮放(GKEY)為1,0.5,0.5的尺寸。
- 對其進行倒角(WKEY),遞迴為1,大小為0.03(按空格鍵手動輸入值)。
- 在邏輯面板中,將其設定為Actor,動態,剛體,質量為0.5。
- 在下方點選邊界,並保持為“盒子”。這使得Blender意識到你新增的是一個盒子,並應該像盒子一樣行動(它現在會滑動而不是滾動)。
- 將它移動到迷宮中的一個交叉點(GKEY),並重復它,直到你得到一堵磚牆(ALT DKEY,LMB)。
你現在有一個屏障,你的角色可以穿過它。
你現在已經瞭解了足夠的Blender遊戲引擎(BGE)知識來建立你自己的遊戲。如果你想深入研究Blender遊戲,我建議你學習Python,因為試圖在BGE的圖形介面中製作一個完整的遊戲就像試圖用牙籤的鈍端挖墳墓。蒙著眼睛。而且牙籤粘在你的額頭上。但是,你現在已經踏上了成為遊戲製作人的道路!有關Python的基本入門教程,請參閱“開源影片遊戲”系列。
如果你有任何問題、疑慮或“新手提示”,請將它們釋出在本教程的討論頁面,而不是教程本身。




