跳到內容

Godot 遊戲引擎指南/物理

50% developed
來自華夏公益教科書,開放的書籍,開放的世界

物理在許多遊戲中被用於許多不同的用途,例如墜落、撞牆、跳躍等等。

StaticBody 是一個碰撞體,它不打算移動。雖然它可以移動,但它不應用於角色。

靜態體可以毫無問題地縮放。

它是速度最快的碰撞體型別。它應該用於環境和其他不可移動的事物。

RigidBody 是一個受重力影響的物件。它通常不用於角色,因為它很難控制,但可以在物理模擬遊戲中使用,因為它非常準確。

不能以任何方式縮放!

KinematicBody 是一個旨在透過指令碼移動的物體。它也可以用作檢測是否撞擊物體或表面的方法。

運動學物體非常適合角色,但不應該用於模擬高階物理。

Area 可用於檢測其他區域、剛體或運動學物體。重疊時會發出一個訊號,當物體離開時也會發出另一個訊號。

如果攝像機/音訊監聽器在區域內,則可以更改聲音的效果。例如:跳入水中時,可以使汽車噪音變得沉悶。您可以透過更改“AudioBus”屬性並選擇匯流排來實現。您應該為此建立一個“沉悶”匯流排,並且audio_bus_override 必須設定為true。(這是覆蓋的預設音訊匯流排,這意味著汽車噪音不能使用音訊匯流排。它不會將匯流排疊加在其他匯流排之上)。

為了使碰撞物體與另一個物體發生碰撞,它需要一個或多個CollisionShapeColisionPolygon 子節點。CollisionShapes 需要定義一個物件來設定它們的形狀和大小,而 CollisionPolygons 需要定義多個邊(至少 3 個)。

碰撞遮罩和層級

[編輯 | 編輯原始碼]

每個物體都可以有遮罩和層級。如果至少一個遮罩等於重疊物體的層級,則這兩個物體將被視為發生碰撞。這可以用來使玩家與地面、牆壁和敵人發生碰撞,但不能與其他玩家發生碰撞,或者與地面和牆壁發生碰撞。

每個層級可以在專案設定 -> 層級名稱 -> 2d 物理專案設定 -> 層級名稱 -> 3d 物理中指定名稱。這可以提高可讀性,並減少出現錯誤的可能性。以下是一個示例

  • 層級 1:世界(牆壁、地面、橋樑等)
  • 層級 2:玩家
  • 層級 3:敵人
  • 層級 4:彈藥
  • 等等

柔軟世界

[編輯 | 編輯原始碼]

如果您的 3D 遊戲使用 SoftBody,您可以模擬當另一個物體與其碰撞時會發生變形的物體。這對斗篷和窗簾很有用。如果未使用,最好關閉專案設定 -> 物理 -> 3d -> 活動柔軟世界以提高效能。

物理引擎

[編輯 | 編輯原始碼]
3D
  • GodotPhysics:簡單且功能強大。與某些碰撞形狀不相容。
  • Bullet:預設引擎。不斷檢查碰撞,減少碰撞缺失,但效能成本更高。如果您的遊戲包含快速移動的物體,例如賽車或子彈,請使用此引擎。
2D
  • GodotPhysics:預設引擎。簡單且功能強大。



Godot 遊戲引擎指南

入門 [編輯]
安裝
什麼是節點?
程式設計
資源和匯入
訊號和方法
你的第一個遊戲
使其正常執行
除錯
輸入
物理
儲存和載入
多人遊戲
使其看起來更美觀
UI 皮膚
動畫
高階幫助
伺服器(單例)
平臺特定
最佳化
加密
匯出
外掛
其他
有用連結
作者和貢獻者
列印版本


<-- 上一頁 返回頂部 下一頁 -->

華夏公益教科書