Skip to content

第01回 3Dダイスポーカー ​

ダイスの出目と役の判定ダイスの出目と役の判定

物理シミュレーションでダイスを振り、得られた目でポーカーの役を判定します。

学習内容 ​

Unityの3D空間でダイス(サイコロ)を物理オブジェクトとして投擲します。
出目は三次元の幾何学を用いて判定、確定させます。
得られた出目は集計し、ポーカーの役として結果を表示します。

  • 物理シミュレーションの基本的な挙動の理解と運用
  • ベクトルの内積による方向判定
  • 数値配列からのマッチング判定

といった、今後のゲーム制作で役立つ基礎知識に触れることを目的としています。

始める前に ​

UnityでSceneを開いてPlayし、Inspectorの値を見る操作と、C#の変数・条件・関数の基本的な読み方を確認してください。向きの計算はダイスの面を見ながら説明します。

前の回の受講や完成物は必要ありません。下の開始用プロジェクトから始めてください。

開始プロジェクト ​

第01回の開始用プロジェクトをダウンロード

Unity 6000.5.5f1を使用します。
ZIPを展開し、Unity HubからDicePokerフォルダーを開いてください。

この教材では、Unity用アセットをAssets/組織名/プロジェクト名/以下にまとめています。
今回は組織名がUNSLOW、プロジェクト名がDicePokerです。
ProjectウィンドウのAssets/UNSLOW/DicePoker以下に、役割別でScenes、Prefabs、Models、Materials、Scripts、Settingsのフォルダーが用意されています。
適時参照してください。

配布ファイル一覧
ファイル役割
Assets/UNSLOW/DicePoker/Scenes/DiceFaceTest.unity1個のダイスを投げ、面の法線と内積を確認するScene
Assets/UNSLOW/DicePoker/Scenes/DicePoker.unity5個のダイスを投げるScene
Assets/UNSLOW/DicePoker/Scripts/DiceFaceTest.cs単独ダイスの操作、法線と内積の可視化
Assets/UNSLOW/DicePoker/Scripts/DiceGame.cs実装済みの投擲・停止待ち・結果表示
Assets/UNSLOW/DicePoker/Scripts/DiceFace.cs今回実装する内積による出目判定
Assets/UNSLOW/DicePoker/Scripts/DiceHand.cs今回実装する整数配列からの役判定
Assets/UNSLOW/DicePoker/Models/Dice.fbxダイスの3Dモデル
Assets/UNSLOW/DicePoker/Models/ArrowXYZ.fbx矢印の3Dモデル
README.mdZIPに同梱された起動手順とファイルの案内

3Dモデルはダイスと矢印の素材から取得できます。
一般的なFBX形式の3Dモデルファイルです。
形状を調査変更したい場合などに利用してください。

配布プロジェクトの内容 ​

各ダイスの出目を確定させ、役を求める処理を実装していきます。
まず1個のダイスからはじめて、出目の判定プログラムを作成します。
出目を正しく読めるようになったら、5個のダイスを使ったポーカーの役判定に進みます。

| Scene | 自分で実装する処理 |
| --- | --- | --- |
| DiceFaceTest.unity | DiceFace.Read:法線ベクトルの内積からダイスの1〜6の出目を求める |
| DicePoker.unity | DiceHand.Evaluate:出目の配列から役を求める |

ダイスの投擲と停止の待機、6面の内積の表示といった背景処理は実装済みです。

完成確認 ​

  • 物理衝撃でダイスを振ることができる
  • ダイスの停止を判定、待機できる
  • 面の方向ベクトルの内積から出目を求めることができる
  • 5個のダイスを振り、役を判定できる