跳轉到內容

Blender 3D:從新手到專業/平臺遊戲:物理修復

來自 Wikibooks,開放世界中的開放書籍

本教程旨在改進其前篇,平臺遊戲:建立和控制,並將需要透過該教程建立的檔案。建議您在開始本教程之前閱讀 一個令人驚歎的遊戲引擎教程。它將需要您熟悉 Blender UI、簡單命令(例如 A 鍵選擇)和基本建模技能。本教程將介紹以下功能和改進

  1. 僅允許角色在接觸地面時跳躍
  2. 阻止角色在撞擊物體時大幅彈跳
  3. 調整材質摩擦力的地方

本教程是為 2.45 版本編寫的。

建立你的碰撞測試物體

[編輯 | 編輯原始碼]

使用 **SHIFT-D** 複製立方體。進入編輯模式,選擇立方體的底部四個頂點並刪除它們。返回物體模式。轉到按鈕視窗中的編輯面板。在“連結和材質”部分,將 ME:值更改為“Square”,將 OB:值更改為“FloorHit”。在“網格”部分,將有三個帶有“中心”字樣的按鈕;中心、中心新建和中心游標。按下“中心新建”。這將更改“Square”網格的原點,使其位於所有頂點的中心,而不是位於您製作它的立方體的中心。將其縮放到原始大小的 99%,然後沿 Z 軸向上移動 0.01。現在轉到著色面板,並確保您在材質按鈕子面板中。找到連結和管道,並確保“ME 被選中。單擊材質選擇旁邊的 X(在“連結到物體”字樣下)。然後選擇“OB”,按下“新增新”併為該材質命名為“FloorHit”(同樣,不加引號)。將其設定為綠色,這樣您在編輯時可以輕鬆找到它,但請在“材質”部分開啟“無陰影”和“無霧”,並在“連結和管道 - 渲染管道”部分開啟“僅投射陰影”,並在“渲染管道”部分關閉“無線電”、“可跟蹤”和“Shad(ow)buffer”,在“著色器”部分關閉“陰影”。這將使其在執行時完全不可見,並且佔用很少的資源。

(問題:它不會使其不可見,只是快速閃爍)

讓感測器需要地面接觸

[編輯 | 編輯原始碼]

現在選擇蘇珊娜並轉到邏輯面板。新增一個名為“jumpcol”(表示“跳躍碰撞”)的接觸感測器,並將其連線到與跳躍鍵盤感測器相同的 AND 控制器。將 f 設定為 10,將 MA:設定為 FloorHit。這將使您的角色只能在接觸具有 FloorHit 材質的物體時跳躍。同樣地,您可以將其連結到您所有與移動相關的 AND 控制器,這樣玩家就無法在空中調整其移動。這是一種不錯的物理效果,但對於大多數平臺遊戲來說,它並不適用,因為在空中靈活性幾乎是必不可少的。您還必須使用 Force 而不是 dLoc,否則您的角色在跳躍時將無法移動,除非您的角色只需要用頭撞擊物體,而不是跳過空隙。請注意,這仍然不能阻止角色在接觸碰撞面的側面時跳躍,因此他們仍然可以跳躍,如果他們接觸碰撞面的側面,但至少他們不能在空中或接觸地面的底部時跳躍。我還沒有找到一個不涉及 Python 的解決這個問題的方法。

過度彈跳

[編輯 | 編輯原始碼]

您可能已經注意到,原始模型的另一個問題是,當您撞到地面立方體時,您會彈回很多。要解決這個問題,請選擇其中一個綠色的碰撞測試正方形,然後轉到材質面板。在顏色選擇器下面應該有三個按鈕,分別顯示“RGB”、“HSV”和“DYN”。選擇“DYN”,並將恢復值調到最大或全部調到最大。如您所見,您也可以從這裡找到摩擦屬性,如果您希望您的地面具有更大或更小的摩擦力(如泥土或冰)。

最終說明

[編輯 | 編輯原始碼]

始終使用 **ALT-D** 複製您的地板、它們各自的碰撞測試物體和其他通用物體,而不是使用 **SHIFT-D**。這樣可以防止您複製對於每個物體都保持不變的東西,例如材質和網格,如果未回收,這些東西會很快消耗資源。由於在學習 Python 之前,您無法再進一步進行平臺遊戲,因此建議您開始查詢有關 Blender API 的資訊。一些必要的資訊可以在 過程化物體建立 教程中找到。本教程的最終產品的 Blend 檔案即將推出。

注意:可以在本教程的討論頁面上找到一個(可能是)更簡單的方法來限制跳躍。

華夏公益教科書