1. 程式人生 > >Unity - 2D物理關節

Unity - 2D物理關節

  • 本文概述: 分析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