【Unity 插件推薦】Simple Bicycle Physics 關節物理模擬系統,適用於自行車與輪式載具!

目錄
【Unity 插件推薦】Simple Bicycle Physics 關節物理模擬系統,適用於自行車與輪式載具!

前言

 

今天要介紹的是 Simple Bicycle Physics,一款基於【關節物理(Joint Physics)】與【Animation Rigging】打造的 Unity 自行車模擬插件,主打【真實騎乘物理】+【程式化角色動作】的整合式解決方案。

不同於只處理車輛本體的物理插件,Simple Bicycle Physics 不僅完整模擬自行車【轉向】、【踩踏】、【傾斜】與【碰撞反應】,同時也處理了「角色如何自然地騎在車上」這件事。

 

透過【IK】、【噪音控制】與【關節校正】,即使是通用人形角色,也能快速套用騎乘姿態,省下大量動畫調整時間。

如果你正在開發【騎乘系統】、【開放世界交通工具】、【運動類遊戲】,或是需要高可信度的自行車物理表現,這套插件會是【相當成熟】且【可延展】的選擇。

今天要介紹的是 Simple Bicycle Physics,一款基於【關節物理(Joint Physics)】與【Animation Rigging】打造的 Unity 自行車模擬插件,主打【真實騎乘物理】+【程式化角色動作】的整合式解決方案。  不同於只處理車輛本體的物理插件,Simple Bicycle Physics 不僅完整模擬自行車【轉向】、【踩踏】、【傾斜】與【碰撞反應】,同時也處理了「角色如何自然地騎在車上」這件事。    透過【IK】、【噪音控制】與【關節校正】,即使是通用人形角色,也能快速套用騎乘姿態,省下大量動畫調整時間。  如果你正在開發【騎乘系統】、【開放世界交通工具】、【運動類遊戲】,或是需要高可信度的自行車物理表現,這套插件會是【相當成熟】且【可延展】的選擇。

 

 

Unity Simple Bicycle Physics 插件介紹

 

Simple Bicycle Physics 是一套以 Unity 原生物理系統為核心的自行車模擬工具,透過【Configurable Joint】、【剛體】、【物理材質】與【四元數控制】,建立【穩定】且【可預期】的騎乘行為。

插件整合了 Animation Rigging,讓角色的【踩踏】、【重心轉移】、【身體擺動】不再只依賴動畫片段,而是隨著【速度】、【轉向】與【地形】即時變化,呈現近似「半程式化動畫」的效果。

除了基本的玩家操控外,插件也內建【路徑錄製】與【回放系統】、【主動式布娃娃(Active Ragdoll)】,能延伸出【AI 騎士】、【重播幽靈】、【撞擊反應】等進階玩法。

Simple Bicycle Physics 插件示意圖

 

功能特色

  1. 關節物理自行車控制
    以 Unity 原生【關節物理】為基礎,處理自行車的【轉向】、【加速】、【傾斜】與【倒車】行為,並可直接透過參數調整騎乘手感,兼顧【穩定性】與【可控性】。
  2. 【程式化動畫】與【IK】整合
    整合 Animation Rigging,讓角色的【踩踏動作】與【身體擺動】隨車輛狀態即時變化,支援標準人形角色快速套用騎乘姿態。
  3. 【延伸系統】與【進階玩法】
    內建【路徑錄製回放】與【主動式布娃娃】機制,可用於【AI 騎士】、【重播展示】或【碰撞反應】表現。

 

適用場景

  1. 【自行車】與【運動】題材遊戲
    適合用於【自行車競速】、【登山車】或【技巧挑戰】等玩法,能同時兼顧【操作感】與【視覺真實度】。
  2. 【開放世界】與【角色移動系統】
    在需要長距離移動的場景中,自行車可作為【步行】與【高速載具】之間的選項,並支援【角色上下車】與【鏡頭跟隨】。
  3. 【模擬】與【展示】用途
    由於物理參數高度可調,也適合用於【教學】、【展示】或【技術示範】類專案,快速呈現不同設定下的騎乘差異。
【Unity 插件推薦】Simple Bicycle Physics 關節物理模擬系統,適用於自行車與輪式載具!

 

 

Unity Simple Bicycle Physics 插件下載安裝

 

Asset Store 下載連結:Unity Simple Bicycle Physics

Asset Store 下載連結:Unity Simple Bicycle Physics

 

 

Unity Simple Bicycle Physics 目錄結構詳解

Unity Simple Bicycle Physics 目錄結構詳解
  • Animations:包含騎乘者的角色控制器,以及一些基本動畫(如待機、過渡到騎行、倒車);內含的基於 Unity Mechanim 的動畫均為人形動畫,適用於所有人形角色。
  • Editor:包含一個編輯器腳本,用於將場景中選定的自訂角色設定為騎乘者。
  • Example Scenes:包含多種不同類型的自行車及其配置場景,供測試使用。
  • Materials:包含材質(皆為標準著色器),相容於所有三種渲染管線。
  • Mobile Controls:包含在 iOS/Android 平台上運作所需的相關檔案。
  • Models:包含騎乘者可以騎乘的不同車輛類型的模型。
    這些模型被分解為以下部分:
    • 車把
    • 前叉下部
    • 前輪
    • 後輪
    • 曲柄
    • 前齒輪
    • 後齒輪
    • 右/左踏板
  • Physic Materials:包含輪胎和地形的物理材質,相關設定可在 Bicycle Controller 的檢視面板中找到。
  • Prefabs:完全設定好的自行車預製體,可直接拖放使用。
  • Prototyping:包含測試環境的資料、紋理和模型。
  • Scripts:核心腳本,詳見下文。
  • Textures:包含材質所使用的紋理[2K - 4K 解析度],提供多種騎行服類型和顏色供選擇。

 

 

Unity Simple Bicycle Physics 快速開始

 

設定自訂角色步驟

  • 拖入預製體模板進場景。
拖入預製體模板進場景。
  • 拖入自訂角色。
拖入自訂角色。
  • 選取自訂角色,點選"Setup Selected"按鈕。
選取自訂角色,點選"Setup Selected"按鈕。
  • 這將一鍵把 TemplatePrefab 模板的原始騎乘者的 Transform、Animator Controller、Procedural IK Handler 等屬性轉移到你的自訂角色。
這將一鍵把 TemplatePrefab 模板的原始騎乘者的 Transform、Animator Controller、Procedural IK Handler 等屬性轉移到你的自訂角色。
  • 刪除原騎行者角色。
刪除原騎行者角色。
  • 檢查新角色模型 Rig 下的各個 GameObject,並在檢視面板中將其值指定為你自訂角色的對應骨骼部件,和目標對象。
檢查新角色模型 Rig 下的各個 GameObject,並在檢視面板中將其值指定為你自訂角色的對應骨骼部件,和目標對象。
  • 注意也要查看角色 CyclistAnimController 腳本的 Right Foot IK 有沒有配置,沒有要記得配置上。
注意也要查看角色 CyclistAnimController 腳本的 Right Foot IK 有沒有配置,沒有要記得配置上。
  • 查看 CyclistAnimController 原始碼可以看到程式碼裡並沒有動態配置 Right Foot IK參數,不知道這算不算是插件的一個 bug,作者忘記寫了。
查看 CyclistAnimController 原始碼可以看到程式碼裡並沒有動態配置 Right Foot IK參數,不知道這算不算是插件的一個 bug,作者忘記寫了。

 

行動端控制設定步驟

  • 開啟場景:MobileBicycleStandardSetup.scene。
  • 在 Bicycle Controller 腳本上點擊,使用 Visual Studio 或其他 IDE 開啟。
  • 註解掉 //***MOBILE CONTROLS***// 之前的程式碼行,並取消註解 //***MOBILE CONTROLS***// 之後的程式碼行。 (選取文字後按 Ctrl + / 可快速註解/取消註解)。
註解掉 //***MOBILE CONTROLS***// 之前的程式碼行,並取消註解 //***MOBILE CONTROLS***// 之後的程式碼行。 (選取文字後按 Ctrl + / 可快速註解/取消註解)。
  • 將螢幕解析度設定為 1920x1080 或你裝置的解析度。
  • 你可以透過觸控或滑鼠控制螢幕上的按鈕,Bicycle Controller 腳本檢視面板底部提供了額外的設定選項。
你可以透過觸控或滑鼠控制螢幕上的按鈕,Bicycle Controller 腳本檢視面板底部提供了額外的設定選項。
  • 進入播放模式後,移動控制元件會自動引用(開發者請注意,我們在 Start() 函數中使用了 GameObject.Find(string s),僅為方便起見)。
  • 為 iOS/Android 平台建置專案以測試控制項。

 

 

Unity Simple Bicycle Physics 核心腳本說明

 

Bicycle Controller (自行車控制器)

這是最主要的控制腳本。

這是最主要的控制腳本。
  • (類) Cycle Geometry (自行車幾何):
    • 包含用於動畫和控制自行車運動所需的 GameObject 引用。
    • 公共成員包括:車把、前叉下部、前輪、後輪、曲柄、前齒輪、後齒輪、右/左踏板。
    • 此類別與模型的錨點/軸心位置緊密配合,並使用四元數進行旋轉。
      重要:請確保任何你想要整合的新自行車模型,其錨點和位置遵循範例自行車的規範。
  • F Physics Wheel (前輪物理組件):
    • 這是一個 Unity 的可配置關節,其位置在所有軸上被鎖定,角運動在兩個軸上自由前進滾動 + 轉向。
    • 附有具有真實品質的剛體組件。
    • 使用球體碰撞體,因其能提供比高度細分網格更好的旋轉曲率。
  • R Physics Wheel (後輪物理組件):
    • 這是一個 Unity 的可配置關節,其位置在所有軸上被鎖定,角運動在一個軸上自由前進滾動。
    • 附有具有真實品質的剛體組件。
    • 使用球體碰撞體。
  • (類) Wheel Friction Settings (車輪摩擦設定):
    • 此類用於設定自行車輪胎的物理材質。
    • F Friction 對應前輪摩擦,R Friction 對應後輪摩擦,類型為 Vector2。
    • X 字段調整靜摩擦,Y 字段調整動摩擦,建議值保持在 0.5 以上。
  • Steer Angle (轉向角):控制車輪從中立位置轉向的最大角度。
  • Axis Angle (軸傾角):轉向時車輪的傾斜角度;此值僅影響視覺效果,不影響物理模擬。
  • Lean Angle (車身傾斜角落):對應騎乘者視覺上的身體重心轉移,數值越大,重心轉移越明顯;此值不影響物理模擬。
  • Top Speed (最高速度):自行車能達到的最大速度。
  • Reversing Speed (倒車速度):騎乘者倒車時的最大速度;此設定不會改變倒車動畫的速度。
  • Torque (扭力):騎乘者踩踏的力量,值越大,加速度越大。
  • Speed Gain (速度增益):加速度提升量,非物理精確,用於人為提升速度。
  • COM (重心):車輛的重心位置。
  • Oscillation Amount (擺動幅度):踩踏時自行車左右搖晃的程度,值越大,搖晃越明顯;此屬性也會影響角色的 IK。
  • Oscillation Affect Steer Ratio (擺動影響轉向比):遵循騎行的自然運動,車身的左右擺動也會在一定程度上影響轉向;此數值指的是車身擺動所造成的反向轉向量,數值越大,代表越多的擺動被轉移到車把的轉向。
  • (類) Pedal Adjustments (踏板調整):
    • 包含控制踏板運動的屬性;此類中的數值影響角色 IK。
    • Crank Radius (曲柄半徑):踩踏中心的半徑,值越大,踏板旋轉半徑越長。
    • L/R Pedaling Offset (左/右踏板偏移):控制踏板局部位置的 Vector3 值。
    • Pedaling Speed (踩踏速度):對應騎乘者踩踏的快速緩慢。
  • Ground Conformity (地面貼合):對於非陀螺儀平衡的輪式系統(如三輪車);啟用此選項可確保車輛並非總是直立,而是會跟隨地形曲率。
  • Inelastic Collision (非彈性碰撞):嘗試減少/消除自行車在摔倒撞擊後的彈跳。
  • Bunny Hop Strength (兔跳力度):騎乘者可以進行兔跳的向上力量。
  • (類) Waypoint System (路徑點系統):
    • 此系統用於創建機器人或多個離線玩家,與主玩家一同在地圖上沿路徑騎行,本質上是一個具有即時物理的重播/幽靈系統。
    • 使用方法:
      1. 在"Recording State"下拉式選單中選擇"Record"。
      2. 進入播放模式,騎乘你的自行車一段時間。
      3. 在播放模式下,選取層級檢視中的自行車控制器 GameObject,然後前往 Window > Save Bicycle Replay。
      4. 退出播放模式,前往 Window > Load Bicycle Replay。
      5. 將"Recording State"更改為"Playback",然後進入播放模式進行測試。
    • 注意:回放是幀率依賴的,請確保錄製和回放時都開啟垂直同步以獲得一致效果。

 

Procedural IK Handler (程序化 IK 處理器)

此腳本嚴重依賴 Animation Rigging 包,並採用多種 IK 約束來模擬騎乘者的運動。

此腳本嚴重依賴 Animation Rigging 包,並採用多種 IK 約束來模擬騎乘者的運動。
  • Chest IK Range (胸部IK範圍):Vector2 值,定義 ChestIKTargetGameObject 運動的上下限(X 為下限,Y 為上限),並修改運動的權重,權重類似 Lerp 插值。
  • Hip IK Range (臀部 IK 範圍):Vector2值,定義 HipIKTargetGameObject 運動的上下限。
  • Head IK Range (頭部 IK 範圍):Vector2值,定義 HeadIKTargetGameObject 運動的上下限。
  • Hip IK Settings (臀部 IK 設置):
    • Hip Vertical Oscillation (臀部垂直擺動):臀部響應踩踏的上下擺動。
    • Hip Movement Aggression (臀部移動幅度):臀部響應踩踏的旋轉擺動。
    • Hip Horizo​​​​ntal Counter Rotation (臀部水平反向旋轉):臀部響應踩踏的左右擺動。
  • Chest IK Settings (胸部 IK 設定) :
    • Chest Vertical Oscillation (胸部垂直擺動):胸部響應踩踏的上下擺動。
    • Chest Movement Aggression (胸部移動幅度):胸部回應踩踏的旋轉擺動。
    • Chest Horizo​​​​ntal Counter Rotation (胸部水平反向旋轉):胸部響應踩踏的左右擺動。
  • Centered (居中控制):臀部 IK 和胸部 IK 設置的主控。用於抑制/誇張自然運動,使騎乘者保持在自行車中心。
  • (類) Noise Properties (噪音屬性):為騎乘者提供視覺上的平衡、顫動、搖晃運動,以增強真實感。
  • (類) Body Damping Properties (身體阻尼屬性):控制身體響應地面角度的移動,較高的胸部和臀部阻尼值使身體像減​​震器一樣工作。

 

Bicycle Camera (自行車攝影機)

Bicycle Camera (自行車攝影機)
  • Target (目標):攝影機跟隨的 GameObject。
  • Distance (距離):攝影機與目標的水平距離。
  • Height (高度):攝影機與目標的垂直距離。
  • Height Damping (高度阻尼):攝影機達到指定高度所需的時間。
  • Lookatheight (注視點高度):攝影機注視點的高度偏移量(0, Y, 0)。
  • Parent Rigidbody (父級剛體):用於距離倍增計算。
  • Rotation/Distance Snap (旋轉/距離捕捉):達到指定旋轉和距離值所需的時間。
  • Distance Multiplier (距離倍增):隨著目標物加速,攝影機拉遠的效果。

 

Perfect Mouse Look (完美滑鼠視角)

Perfect Mouse Look (完美滑鼠視角)

當滑鼠移動時,此腳本被激活,使用者可以使用滑鼠環繞目標物體觀察。當滑鼠停止移動時,視角會平滑地彈回原始位置。

 

 

Unity Simple Bicycle Physics 程式化動畫

 

Unity Simple Bicycle Physics 程式化動畫

在我們的資源中,僅使用三個動畫狀態來管理騎乘者的全部運動。

我們利用了一些程序化技術,包括噪音和透過重量控制的預設 IK。

這些偽程序化動畫就是 Animation Rigging 包的直接成果。

所有動畫都以 Unity 的 Mechanim 人形動畫片段為基礎。這些片段可以直接在編輯器中編輯,並且具有很高的可自訂性。

 

 

Unity Simple Bicycle Physics 布娃娃物理系統

 

概述

主動式布娃娃是一種能夠施加力來移動自身的布娃娃物理系統。

在本資源中,主動式布娃娃透過關節系統,嘗試復刻目標動畫的旋轉姿態來實現運動。

在 Simple Bicycle Physics 中,主動式布娃娃以預製體的形式存儲,並在碰撞時實例化。

相關的碰撞設定和預製體實例化程式碼位於 Bicycle Status Script 中。

相關的碰撞設定和預製體實例化程式碼位於 Bicycle Status Script 中。

 

工作機制

  • 初始化:
    • 發生碰撞時,系統會填滿關節和受追蹤肢體的列表,並將它們的變換狀態複製到緩衝區中。
    • 在下一個 FixedUpdate 中,這些緩衝值被應用到變換矩陣中,並根據碰撞位置初始化關節。
  • 動畫跟隨:
    • 隨後,主動式布娃娃機制開始運行,其運動受到布娃娃動畫控制器及其自身物理動畫的影響。
  • 層級結構:
    • 碰撞後,實例化的預製體在層級視圖中的結構如下:
      • CrashDummy (Clone) 這是主動式布娃娃對象,它複製 AnimationToFollowTagGameObject 中正在運行的動畫。
CrashDummy (Clone) 這是主動式布娃娃對象,它複製 AnimationToFollowTagGameObject 中正在運行的動畫。
  • 重置:
    • 當按下 R 鍵時,布娃娃系統會被重置,對應的 GameObject 將會被銷毀,這一過程分別在 LateUpdate() 和 GetKeyUp 事件中處理。

 

可調參數

您可以直接編輯預製體來觀察變化。

您可以直接編輯預製體來觀察變化。

  • 身體部位品質:
    • 指每個活動關節組件所附剛體的質量,這會影響系統的動量。
    • 注意:目前腳本假定所有身體部位都具有相同的給定質量。 [此設定可能在未來的更新中改變]
  • 關節角阻尼:
    • 控制關節在受到撞擊後運動的阻尼程度。
    • 較低的數值會導致關節出現無力的甩動效果。
    • 較高的數值會使關節反應更遲緩,盡可能保持其原有位置。
  • 剛度:
    • 控制主動式布娃娃跟隨原始動畫的緊密程度。
    • 數值越高,布娃娃會越嚴格地復刻動畫。
  • 拋射速度倍增器:
    • 這是一個趣味性效果,能讓布娃娃被拋射出去的速度大於車輛本身的速度。
    • 為了物理準確性,此值應設為 1,這樣玩家角色將正確繼承車輛的動量。

 

 

Unity Simple Bicycle Physics 上下車機制

 

概述

資源包中的車輛上下車場景使用了由 Unity Technologies 提供的 Starter Assets - Third Person Character Controller。

以下步驟將指導您如何使用此第三人稱角色控制器來設定場景。

 

設定步驟

第一步:匯入資源

  • 點擊上方鏈接,將 Starter Assets - Third Person Character Controller 資源新增到您的資源庫。
  • 在 Unity 編輯器中,前往 Window > Package Manager。
  • 搜尋並找到該資源包,下載並安裝。
  • 安裝後,編輯器可能會提示您重新啟動 Unity 以更新輸入系統,請選擇「是」。
安裝後,編輯器可能會提示您重新啟動 Unity 以更新輸入系統,請選擇「是」。

 

第二步:配置輸入系統

  • 前往 Project Settings > Player Settings > Other Settings。
  • 找到"Active Input Handling"選項,並將其設為"Both"。
前往 Project Settings > Player Settings > Other Settings。
找到"Active Input Handling"選項,並將其設為"Both"。

 

第三步:測試場景

  • 完成上述設定後,點選播放按鈕測試場景功能。
完成上述設定後,點選播放按鈕測試場景功能。

 

故障排除

  • 確保角色引用正確:
    • 請檢查並確保在 Animation Controller 腳本中正確引用了 PlayerArmature。
請檢查並確保在 Animation Controller 腳本中正確引用了 PlayerArmature。

 

 

Unity Simple Bicycle Physics 關節物理模擬系統相關介紹 & 教學影片

 

Simple Bicycle Physics [UNITY]

 

Mountain Bike Mechanics with Impact IK | Simple Bicycle Physics

 

Active Ragdoll Simulation - Simple Bicycle Physics [UNITY]

 

 

Unity Simple Bicycle Physics 關節物理模擬系統相關網站 & 插件載點

 

【Simple Bicycle Physics】

Asset Store 下載連結:Simple Bicycle Physics

 ———————————————— 

 

更多好用插件:【Unity 好用插件推薦】持續更新,一遊戲開發事半功倍!

 

 

 

本文原創(或整理)於亞洲電玩通,未經作者與本站同意不得隨意引用、轉載、改編或截錄。

特約作家簡介

X
A
Y
B
JamXu的頭像
JamXu
10年遊戲研發
20年遊戲玩家
30年遊戲人生

經中華網龍遊戲 企劃進入遊戲圈,然後被雷打到去學 程式前後端又學了點 設計再 帶帶幾個研發團隊,見證了 3D 渲染技術及遊戲引擎互相進步,也見證了研發代理的更迭與博弈遊戲的興起,再毅然研究起 SEO 網路行銷與 社群廣告投放,深信自研自賣才是最大贏家,期望能為台灣研發重回輝煌時光貢獻一點力量。如果你也有 遊戲夢,歡迎交流認識。


支持贊助 / DONATE

 

亞洲電玩通只是很小的力量,但仍希望為復甦台灣遊戲研發貢獻一點動能,如果您喜歡亞洲電玩通的文章,或是覺得它們對您有幫助,歡迎給予一些支持鼓勵,不論是按讚追蹤或是贊助,讓亞洲電玩通持續產出,感謝。

亞洲電玩通AsiaGameMaster - Steam 遊戲鑑賞家
亞洲電玩通AsiaGameMaster - FB 粉絲專頁
亞洲電玩通AsiaGameMaster - IG 粉絲專頁
亞洲電玩通AsiaGameMaster - Twitter
亞洲電玩通AsiaGameMaster - Yoytube 粉絲專頁
亞洲電玩通AsiaGameMaster - Tiktok

BTC

亞洲電玩通AsiaGameMaster - BTC 鏈贊助地址

bc1psp8nnerlepv56nyfha6mqwnp3yr7qqjdw44c6qt5lx5r2urma7fqykxvwj

 

ETH

亞洲電玩通AsiaGameMaster - ETH 鏈贊助地址

0xB2231557bc418201922DD7C2673ec97E67E35F83

 

TRON

tron-qrcode亞洲電玩通AsiaGameMaster - TRON 鏈贊助地址

TAomNj4L6vMJuaJmbWUdmT1uAWYPf9vDjp

延伸閱讀