9-3. WeldとMotor6Dによるアセンブリ化
WeldとMotor6Dによるアセンブリ化
アセンブリ化とは
アセンブリ化とは、複数のオブジェクトをなどの接続を行うことで物理的に一体化した動作とすることです。接続されたアセンブリは、物理的には1つの剛体として扱われ、アセンブリ内のパーツは衝突等の干渉をしません。
また、エクスペリエンス内ではアセンブリ単位での物理的な計算が行われるのが基本となります。例えば重さはアセンブリでの合計で計算され、また力はアセンブリの中心に対して与えられる、といった形になります。
Roblox上で物理的な適当な振る舞いを実現するには、アセンブリ化の概念の理解は非常に重要となります。
主なアセンブリ化方法
WeldConstraintsによる接続
は二つ以上のパーツを固定的に接続し、それらを一体化します。接続時点での座標関係で接続し、その際にお互いのパーツが衝突していても接続後は干渉しなくなります。最もシンプルな接続方法であり、基本的なアセンブリ化は主にで行われることが多くなります。
- 使用例: 建築物や家具などのパーツを一体化、オブジェクトへの付帯物を一体化、など
Motor6Dによる接続
Motor6Dは、Roblox上のジョイントとして機能する接続体です。WeldConstrains同様に一体化した上で、回転や移動のような動的な制御が可能な接続を作成します。Robloxのキャラクターは基本はこのMotor6Dを用いて一体化されており、Motor6Dにより関節としての制御を行いアニメーションなどを可能としています。なお、ジョイントを構成するには、Motor6Dだけでなく、似た役割となるBoneもあります。
- 使用例: キャラクターの関節、可動部分を持つ機械、アニメーションされたキャラクターなど
その他のConstraintsによる接続
Robloxには、他にも様々な物理的な拘束が用意されており、主にはメカニカルConstraintsと呼ぶ拘束を使うと同様にアセンブリ化されます。例えば、ヒンジにより拘束しつつ回転のみを可能とする、など、一体化かつ特定の動きを可能とします。メカニカルConstraintsは次項で詳しく紹介します。
- 使用例: ドアを一体化しつつ開閉部分は動くように、など
アセンブリ化の留意点
- パフォーマンス: 大量のWeldやMotor6Dを使用すると、パフォーマンスに影響を及ぼす可能性があります。適切な数と必要性を踏まえて使用しましょう。単純に固定したい場合は、アンカーによる固定などを考えましょう。
- 設計: 複雑な構造を設計する際には、どのパーツをどのように接続するか明確なルールを決めて接続をしていくことが重要です。何と何がつながり、Constraintsはどこで管理されているか、が後からでも把握しやすく管理されているのが理想です。