Unity - 2D物理關節
阿新 • • 發佈:2019-09-12
- 本文概述: 分析Unity中幾個2D物理關節元件的基本功能、使用方法、運用場景等
- 開發環境:Unity2019.3.0a2 / VS2017
- 資源包:
- 源專案:2D Joints Starter
- Github成品專案:Physics Joints in Unity2D
- 說明: 較比於源專案,我自行做了如下設定
- 主場景為Demo
- 對Unity新版本下的新引數進行解釋
- 簡單做了新的UI
- 對各指令碼的註釋及修改
- 對場景下物體有序歸類: 將各元件的示例物體歸於對應元件名稱的空物體下,例如涉及DistanecJoint2D元件的物體存放於Distance Joint 2D物體下等
Distance Joint 2D 距離關節
- 基本功能:
- 使兩物體被距離關節限制,保持一定距離
- 一個物體可對另一個物體做基於物理特性的環繞運動(環繞物體與被環繞物體)
- 注意:環繞物體自身不旋轉
- 使用方法:
- Enable Collision:被關節連線的兩個物體是否能相互碰撞
- Connected Rigid Body:定義被環繞物體的錨點到指定物體上
- Auto Configure Connected:自動配置錨點與世界空間中的錨點匹配(暫沒用過,但我相信點了你會Ctrl+Z的)
- Anchor:環繞物體錨點的座標
- Connected Anchor:被環繞物體錨點的座標
- Auto Configure Distance:自動計算並設定兩物體的距離,即在執行時拖拽環繞物體則會改變Distance,若關閉則Distance始終為預設值
- Distance:兩物體的距離
- Max Distance Only:使得物體擺動到較高位置時會沿關節連線方向下沉稍許距離.若關閉,物體在環繞運動中的距離始終為Distance
- 實現用途:
- 擺錘
Spring Joint 2D 彈簧關節
- 基本功能:
- 使兩物體被彈簧關節限制,保持一定範圍距離
- 一個物體可對另一個物體做基於物理特性的彈簧拉伸壓縮運動(副物體與主物體)
- 注意:副物體在圍繞主物體作類彈簧運動時,自身也會旋轉
- 使用方法:
- Enable Collision:被關節連線的兩個物體是否能相互碰撞
- Connected Rigid Body:定義主物體的錨點到指定物體上
- Auto Configure Connected:自動配置錨點與世界空間中的錨點匹配
- Anchor:副物體錨點的座標
- Connected Anchor:主物體錨點的座標
- Auto Configure Distance:自動計算並設定兩物體的距離,即在執行時拖拽環繞物體則會改變Distance,若關閉則Distance始終為預設值
- Distance:兩物體的距離
- Damping Ratio:阻尼比,值範圍[0,1]
- Frequency:震動頻率,單位Hz,值範圍[0,1000000],但個人認為[0,10]較為常用
- 實現用途:
- 彈簧
- 彈射器
Hinge Joint 2D 鉸鏈關節
- 基本功能:
- 使物體圍繞一個固定點旋轉
- 使用方法:
- Edit Joint Angular Limits :手動調節旋轉中心及可旋轉角度範圍
- Enable Collision:物體是否能相互碰撞(但相比於前2個關節,此處用法暫不明)
- Connected Rigid Body:定義物體的錨點到指定物體上
- Auto Configure Connected:自動配置錨點與世界空間中的錨點匹配
- Anchor:物體旋轉中心較於物體自身錨點的座標.通常調節此引數
- Connected Anchor:暫不明具體含義,總之使用Edit Joint Angular Limits足矣
- Use Motor:是否使用馬達.若使用,則使鉸鏈關節保持穩定轉速;若不適用,則就是簡單受到重力因素而擺動的鉸鏈關節
- Motor Speed:旋轉速度.單位米/秒或者角度/秒,取決於是線性馬達還是角電機.可為負值表示反方向
- Maximum Motor Force:最大扭矩值,表示到最大旋轉速度的難易程度.建議預設值
- Use Limits:是否使用角度限制.若使用則鉸鏈關節旋轉到限制角度後就停止.引數包含Lower Angle及Upper Angle
- 實現用途:
- 橫版遊戲中的障礙,跳臺
- 門
Slider Joint 2D 滑動關節
- 基本功能:
- 使物體可在某方向上進行滑動(自動或手動)
- 使用方法:
- Enable Collision:物體是否能相互碰撞
- Connected Rigid Body:定義物體的錨點到指定物體上
- Auto Configure Connected:自動配置錨點與世界空間中的錨點匹配
- Anchor:滑動物體的錨點,預設0為物體中心
- Connected Anchor:物體滑向的錨點
- Auto Configure Angle:根據當前Scene內的座標,自動調節物體起始的角度
- Angle:自行設定並固定物體起始時的角度
- Use Motor:是否使用馬達.若使用,則可自動滑動到終點
- Motor Speed:滑動速度,單位同上.可正可負
- Maximum Motor Force:最大扭矩值,含義同上
- Use Limits:是否使用距離限制,限制滑塊兩端的距離.也就是說,Connected Anchor錨點始終在Lower Translation和Upper Translation兩端內,就在這樣一個範圍內進行滑動.
- 實現用途:
- 自動或者手動的滑塊(機關)
Wheel Joint 2D 車輪關節
- 基本功能:
- 模擬實現車輪的運動狀態,即車輪以車軸為圓心旋轉
- 使用方法:
- Enable Collision:被關節連線的兩個物體是否能相互碰撞
- Connected Rigid Body:定義車輪的錨點到車軸上
- Auto Configure Connected:自動配置車輪錨點與世界空間中的錨點匹配
- Anchor:車輪錨點的座標
- Connected Anchor:車軸錨點的座標
- Suspension:懸架,用於配置車輪震動效果等
- Damping Ratio:阻尼比,值範圍[0,1]
- Frequency:震動頻率,單位Hz,值範圍[0,1000000],此處建議(0,10]
- Angle:可以調節車輪的角度,但尚未知曉具體作用
- Use Motor:是否使用馬達.若使用,則可實現自動旋轉
- Motor Speed:轉動速度,單位同上.可正可負
- Maximum Motor Force:最大扭矩值,含義同上
- 實現用途:
- 汽車車輪
- 不規則自轉
- 某些旋轉特效
- 備註:在demo2場景下還有一個Wheel Joint2D的例項,詳細配置過程不再贅述
參考
- Physics Joints in Unity2D - raywenderlich.com
- Unity2D 中的物理關節 - Rickshao1993