これはなに?
Unity初心者がサイコロアプリを作るまでの過程をまとめた記事になります
アセット以外のところは、ビジュアルスクリプティングを利用して作成したいと思います
作ってみる
今回、作っていくのはコチラ
- サイコロをふる
- 出目を表示する
完成した画面はコチラになります
サイコロをふる
やること
- ダイスのパラメータを追加する
- 出目を表示するテキストを追加する
- サイコロをふるボタンを追加する
- ビジュアルスクリプティング
- サイコロをふる
- 出目を表示する
ダイスのパラメータを追加する
- ダイスの個数、面の数、色を変更できるようにします
- 「ヒエラルキー」パネルの
VisualScripting SceneVariables
を選択します- 「インスペクター」パネルの「Variables」に以下を追加します
- 「
RollDiceCount
(Float)」を追加します - 「
RollDiceType
(String)」を追加します - 「
RollDiceMaterial
(String)」を追加します
- 「
- 「インスペクター」パネルの「Variables」に以下を追加します
出目を表示するテキストを追加する
- 「ヒエラルキー」パネルに
UI > Canvas
を選択して追加します-
UI Scale Mode
: Scale With Screen Sizeにします
-
- 追加したCanvas内に
UI > Text (TextMeshPro)
を選択してLabelDiceValue
で追加します- 非表示にしたいので、オブジェクト名の左にあるチェックを外します
- ビジュアルスクリプティングがあるオブジェクトの「インスペクター」パネルの「Variables」に「LabelDiceValue(Text Mesh Pro UGUI)」を追加します
サイコロをふるボタンを追加する
- 追加したCanvas内に
UI > Imae
を選択してButtonDiceRoll
で追加します-
Cull Transparent Mesh
にチェックします -
Color
: アルファー値を0にして透過します
-
ビジュアルスクリプティング
サイコロをふる
-
Dice Clear
ノードで前に作ったダイスを削除します -
For Loop
ノードを利用して作成するダイス分ループします- Last:
RollDiceCount
を参照します - Body: このFlowの先でダイスの生成をします
- Last:
-
Dice Roll
ノードでダイスをふります- Dice:
RollDiceType
を参照します - Mat:
RollDiceMaterial
を参照します - Spawn point: 画面のどの位置から開始するか決めます
- Force: ふるサイコロの力を決めます(ふる方向、回転)
- Dice:
出目を表示する
サイコロをふった事でStateGraph
の状態がRolling for Dice
からRolled for dice
に移動します
- 出目が確定するまでWaitをもたせる
-
Cooldown
ノードでWaitします- アセットのダイスが止まっているかの判定が微妙だったため
-
- 判定
-
-
Dice As String
ノードでふったダイスの出目をすべて取得します
-
-
String Contains
ノードで判定できなかったダイスがあるか探します- あった場合はやり直し
-
- 出目を取得と表示
-
Dice Value
ノードで出目の合計を取得します -
Text Mesh Pro UGUI Set Text
ノードで出目のテキストを更新します -
Game Object Set Active
ノードで非表示にしていたテキストを可視化します
-
さいごに
苦労したところ
- サイコロの確定が不安定だったのでWaitをもたせた事
有料のアセットだとダイスごとに確定したか検知できるようになってました
無料のアセットは、ダイスごともなかったためダイスの出目を表示するノードからどうにかして判定を作成しました
連載記事