一個 組件 是一個或多個透過剛性 WeldConstraint 焊接或通過可移動關節(如 Motor6Ds)連接的 部件。你可以將部件的組件分組到一個 模型 容器中,以便快速將這些部件和相關物件組織為單個資產。



從物理的角度來看,組件被視為單一 剛體,這意味著沒有力量可以將連接的部件推開或拉開,它們將作為一個單位移動。施加到特定 BasePart 的所有力都會施加到其組件上 — 例如,BasePart:ApplyImpulse() 將在 BasePart.AssemblyCenterOfMass 施加衝擊。
組件屬性
以下 BasePart 屬性顯示有關其組件的數據。它們的值對於同一組件中的任何部件都是相同的,因此使用哪個部件並不重要。
| 屬性 | 描述 |
|---|---|
| BasePart.AssemblyLinearVelocity | 部件組件的線速度向量。直接設置速度可能會導致不切實際的運動,因此建議使用 VectorForce 或 LinearVelocity 約束,或者使用 BasePart:ApplyImpulse() 進行瞬時線速度變化。 |
| BasePart.AssemblyAngularVelocity | 部件組件的角速度向量。直接設置速度可能會導致不切實際的運動,因此建議使用 Torque 或 AngularVelocity 約束,或者使用 BasePart:ApplyAngularImpulse() 進行瞬時角速度變化。 |
| BasePart.AssemblyCenterOfMass | 通過組件中所有部件的質量和位置計算的只讀位置。施加到質心的力不會導致角加速度,僅有線加速度。 |
| BasePart.AssemblyMass | 組件中所有部件的 BasePart.Mass 的總和。如果組件有一個固定的部件,則組件的質量被視為無窮大。 |
| BasePart.AssemblyRootPart | 自動選擇以表示組件的 根部件。 |
組件根部件
每個組件都有一個由其 AssemblyRootPart 屬性指示的 根部件。這是當 Motor6D 變換被更新時不移動的部件,也是用於保持一致物理複製和網絡擁有權的部件。
你不能明確設置根部件,但以下因素按概率影響,從最高到最低:

Anchored 的部件將始終被指定為根部件。

將 Massless 設置為 false(默認) 的部件將優先考慮。

更高的 RootPriority 值具有優先權。

基於部件的大小(最大面積)的優先程度,並且對於特定部件類型有乘數。Seats 和 VehicleSeats 獲得最高的乘數,其次是名為 HumanoidRootPart 的部件,然後是名為 Torso 的部件。
錨定行為
當組件的其中一個部件被錨定時,該部件成為根部件,所有其他部件隨之隱式錨定。以下序列顯示此行為。
下面,四個部件通過 WeldConstraints(綠色條)焊接在一起,形成一個單一的組件,如相應的彩色輪廓所示。

四個部件焊接在一起形成單一組件 如果組件中只有 一個 部件被錨定,則組件不會發生變化,根部件可能會改變(被錨定的部件始終具有成為根部件的最高 優先權)。

被錨定的部件(如錨圖標所示)成為新的根部件 如果有多於一個部件被錨定,則組件將 分裂。下面,左側和上方的部件都被錨定,因此原始組件分成兩個組件,如彩色輪廓所示。另外,兩個組件之間的 WeldConstraint 會停用,因為你不能在兩個錨定的組件之間有活動的焊接。

兩個組件,各自有錨定部件作為根部件