Appearance
第01回 3Dダイスポーカー
2 / 4 サイコロの停止を判定する
このステップの目的
速度と角速度を使い、物理シミュレーションが結果判定へ進める状態になったことを判定する
停止判定を作る
位置がほとんど変わらないことと、回転がほとんど変わらないことを確認します。
csharp
bool IsStopped(float linearLimit, float angularLimit)
{
return body.linearVelocity.sqrMagnitude < linearLimit * linearLimit
&& body.angularVelocity.sqrMagnitude < angularLimit * angularLimit;
}しきい値を小さくしすぎると判定が遅くなり、大きくしすぎると転がっている途中で判定します。
全個体の停止を待つ
5個すべてが停止した後にだけ、出目判定へ進めます。停止した個体の数を毎フレーム数える方法から始めます。
チェックリスト
- 速度と角速度の両方を使っている
- 5個すべての停止を待っている
- しきい値を変えたとき判定タイミングが変わる