Roblox エンジン内の各 アセンブリ は、単一の 剛体 に対応します。各剛体の位置と速度は、それがどこに位置し、どれほど速く移動しているかを説明し、主要なエンジンタスクの 1つは、各アセンブリの位置と速度を更新することです。
アセンブリは、機械的な制約 と 移動制約 とを組み合わせて、車や航空機などの機構を形成することができます。メカニズム内のアセンブリと制約の数が増加するにつれて、メカニズムをシミュレートするために必要な時間も増加します。幸いなことに、この増加は、 睡眠システム がエンジンが非移動アセンブリのシミュレーションをスキップできることを判断すると、オフセットされます。
就寝状態
それぞれのアセンブリは、3つの状態のいずれかにあることができます:起きている、睡眠チェック、または眠っている。
目覚める
起きた アセンブリ は移動または加速しており、それゆえシミュレートされています。アセンブリは、睡眠チェック と 睡眠 、および 追加の覚醒状況 で説明された状況からこの状態に入ります。
睡眠チェック
少なくとも 1つの起動する隣接アセンブリと制約を共有する非移動アセンブリは、 睡眠検査 状態に入り、シミュレートされません。各ワールドステップでは、睡眠検査アセンブリが次のことをチェックします:
- 隣接アセンブリの 位置差 は、隣接移動の 境界値 より大きい。
これらの条件のいずれかが真であるか、または 追加の覚醒状況 のいずれかにある場合、睡眠検査アセンブリが 起きた状態 に入ります。
眠る
A 睡眠 アセンブリは移動していないし加速していないので、シミュレートされていません。
アセンブリは、 位置差 をチェックして非移動であることを決定し、最も最近のワールドステップの中で最も遠い点の質量中心からの平均位置からの最大差を計算して計算します。この偏差が 移動 の境界より大きい場合、アセンブリは 起きた状態 に入ります。
いくつかの場合、非移動をチェックするだけで、アセンブリが睡眠状態に不正確に入る可能性があります。たとえば、ボールがまっすぐ投げられると、その位置は最大高さに近づくにつれてほんの少し変化し、眠りに落ちて再び下に落ちることはありません。このような場合を処理するには、エンジンはアセンブリの加速と現在のタイムステップサイズが 線速度 および/または 角速度 の境界を超えているかどうかをモニタリングします。
境界値参照
次の表には、アセンブリが移動しているか加速しているかを判断するために使用されるさまざまな移動距離と速度の制限が示されています。
境界値 | 値 | 状態変更 |
---|---|---|
隣接移動 | 0.01スタッド | 睡眠チェック ⟩ 起きている |
隣の線速度 | 0.2スタッド/秒 | 睡眠チェック ⟩ 起きている |
隣接角速度 | 0.2ラジアン/秒 | 睡眠チェック ⟩ 起きている |
移動 | 0.001スタッド | 眠る > 起きる |
線速度 | 0.1スタッド/秒 | 眠る > 起きる |
角度速度 | 0.1ラジアン/秒 | 眠る > 起きる |
追加の覚醒状況
In addition to situations outlined in 睡眠チェック and 睡眠 , an assembly enters the 起きた状態 when:
別のアセンブリと衝突します。
アセンブリ内の任意の BasePart の物理関連プロパティが変更され、以下を含む:
非ゼロのパルスは、BasePart 、ApplyImpulse() 、または ApplyImpulseAtPosition() を介して、アセンブリ内の任意の ApplyAngularImpulse() に適用されます。
アセンブリに影響を与える物理関連のプロパティ変更の Workspace には、以下を含む:
新しい Constraint は、アセンブリ内の Attachment に親属する BasePart で作成されます。
アセンブリ内の Constraint に属する Attachment で、親になっている BasePart のプロパティが変更される場合。
アセンブリ内の CurrentAngle に接続された Motor に対するプロパティ変更は、アセンブリ内の BasePart に接続されたものと同じです。
アセンブリには座ったプレイヤーキャラクターを持つ VehicleSeat が含まれています。
アセンブリは BlastRadius の Explosion 内にあります。
デバッグ視覚化
プレイテスト中、3D ビューポートの右上隅の ビジュアライゼーションオプション ウィジェットから 目覚めたパーツ を切り替えて、アセンブリの睡眠状態を視覚化できます。

有効になったら、シミュレートされたパーツは、現在の睡眠状態で概要が示され、目覚めたパーツは赤で概要が示され、睡眠チェックパーツはオレンジで概要が示され、眠っていないパーツは未概要になります。