Version: 2023.2
言語: 日本語
ラグドールの作成
Cloth

ジョイントとラグドールの安定性

このページでは ジョイントラグドール の安定性を向上させるヒントを紹介します。

  • Angular Y LimitAngular Z Limit のジョイントの角度を小さくすることは避けてください。設定によって、角度は最小で約 5 〜 15 度で安定します。小さな角度を使う代わりに、角度を 0 度に設定すると軸がロックされ、安定したシミュレーションが行えます。
  • ジョイントの Enable Preprocessing プロパティのチェックを外します。前処理 (Preprocessing) を無効にすると、ジョイントの制約を満たせない状況を強制された場合、ジョイントが分離したり不規則に動くのを防ぎます。ジョイントの分離や不規則な動きは、ジョイントに接続された Rigidbody コンポーネントが静的な衝突ジオメトリによって引き離される場合 (例えば、ラグドールを部分的に壁の内部に生成するなど) に、発生する場合があります。
  • 極端な状況 (ラグドールを部分的に壁の内部に生成したり、大きな力で押したりするなど) では、ジョイントソルバーは Rigidbody コンポーネントとラグドールを一緒に維持することができません。結果的にラグドールが伸びてしまいます。この問題を解決するために、 ConfigurableJoint.projectionModeCharacterJoint.enableProjection のいずれかを使ってジョイントのプロジェクションを有効にします。
  • ジョイントに接続した Rigidbody コンポーネントにジッタリングが起きる場合は、Physics ウィンドウ (Edit > Project Settings を開き、Physics カテゴリを選択) を開き、Default Solver Iterations の値を 10 から 20 の間に増やします。
  • ジョイントに接続した Rigidbody コンポーネントがバウンスに正確に反応しない場合は、Physics ウィンドウ (Edit > Project Settings を開き、Physics カテゴリを選択) を開き、Default Solver Velocity Iterations の値を 10 から 20 の間に増やしてみてください。
  • Never use direct Transform access with Kinematic Rigidbody components connected by Joints to other Rigidbody components. Doing so skips the step where PhysX computes internal velocities of corresponding Rigidbody components, making the solver provide unwanted results. A common example of bad practice is using direct Transform access in 2D projects to flip characters, by altering Transform.TransformDirection on the root bone of the rig. This behaves much better if you use Rigidbody2D.MovePosition and Rigidbody2D.MoveRotation instead.
  • ジョイントで接続される Rigidbody コンポーネント間の質量に、極端な差を作らないようにします。ある Rigidbody の質量が他方の質量の 2 倍程度の差であれば問題ありませんが、質量に 10 倍もの差がある場合はシミュレーションは不安定になります。
  • Rigidbody やジョイントを含むトランスフォームの Scale を 1 から変更しないようにしてください。すべての場合においてスケーリングの安定性が失われます。
  • (ゲームの)世界に置くときに Rigidbody コンポーネントが重なり、その重複が避けられない場合、Rigidbody.maxDepenetrationVelocity の値を低くして、互いの Rigidbody コンポーネントがスムーズに離れるようにします。
ラグドールの作成
Cloth