Appearance
第01回 3Dダイスポーカー
Unityの3D空間でサイコロを振り、物理的に停止した面をベクトルの内積から読み取ります。出目を集計し、ポーカーの役として結果を表示するまでを完成させます。
この回のゴール
- Rigidbodyのサイコロを投げ、停止を判定する
- サイコロの面の向きとワールド上方向の内積から出目を求める
- 5個の出目を集計し、ワンペアやフルハウスなどを判定する
- 「振る → 待つ → 判定 → 結果表示」の流れを説明できる
今回のポイント
見た目の上面を手作業で調べるのではなく、面の法線と基準方向の関係を計算します。物理結果をゲームルールへ変換することが、この回の中心です。
授業の流れ
1 / 4開始プロジェクトを確認する物理設定済みの開始プロジェクトを実行し、今回実装する範囲を確認する2 / 4サイコロの停止を判定する速度と角速度を使い、物理シミュレーションが結果判定へ進める状態になったことを判定する3 / 4内積から出目を求めるサイコロの面の法線とワールド上方向の内積から、最も上を向いた面を選ぶ4 / 4出目を集計して役を判定する5個の出目を集計し、ポーカーの役と結果表示へ接続する
配布プロジェクト(ドラフト)
物理設定済みのサイコロ、カメラ、テーブル、UIの枠を含む開始プロジェクトを配布します。学生は出目判定、集計、役判定を実装します。
今回実装する範囲
| 区分 | 内容 |
|---|---|
| 自分で実装する処理 | 停止判定、面の内積判定、出目の集計、役判定 |
| 実装済みの機能を利用する処理 | Rigidbody、カメラ、サイコロの面データ、UI表示枠 |
| 後の回で再利用する考え方 | 状態遷移、結果のフィードバック、調整値 |
完成確認
- 5個のサイコロを振れる
- 全てのサイコロが停止した後に判定される
- 内積から出目を求められる
- 出目と役がUIへ表示される