サイコロを振って、毎回異なる目が出るように、スクリプト作成しましょう。
振るたびに違う目がでるように、サイコロを投げたときに、回転角がランダムで変化するように作っています。
クリックするたびに、新しいサイコロが振り出されます。
※今回の記事は、前編、後編の2つに別れています。
後編では、サイコロの出た目の数を取得するしくみを作っています。
サイコロのPrefabを作成
今回は「Dice d6 game ready PBR」というフリーのアセットを使用しました。
Dice d6 game ready PBR
https://assetstore.unity.com/packages/3d/props/tools/dice-d6-game-ready-pbr-200151
Planeを作成し、大きめサイズに変更します。
カメラの位置と向きを変え、見下ろすような位置に調整します。
Dice d6 game ready PBR」のPrefabフォルダから、サイコロを一つ、ドラッグ&ドロップして、シーンビューに入れます。
サイコロのオブジェクトに、リジッドボディを追加します。
振ったあとのサイコロを、クリックのたびに消せるように、スクリプトを作成しましょう。
DiceDelete.csを作成し、サイコロのオブジェクトに追加します。
DiceDelete.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class DiceDelete : MonoBehaviour { void Update() { if (Input.GetMouseButtonDown(0)) { Destroy(gameObject); } } } |
サイコロのオブジェクトを、プロジェクトビューにドラッグ&ドロップして、Prefabデータにしましょう。
原型プレハブを選択します。
サイコロの元データは削除しておきます。
これで、サイコロの準備は完了しました。
サイコロを投げるたびに角度を変える
続いて、サイコロを投げる仕組みをつくりましょう。
空のオブジェクトを作成します。
DiceThrow.csを作成し、GameObject(空のオブジェクト)に追加します。
DiceThrow.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class DiceThrow : MonoBehaviour { public GameObject prefab; private int rotateX; private int rotateY; private int rotateZ; void Update() { if (Input.GetMouseButtonUp(0)) { rotateX = Random.Range(0, 360); rotateY = Random.Range(0, 360); rotateZ = Random.Range(0, 360); GameObject dice = GameObject.Instantiate (prefab)as GameObject; dice.transform.position = new Vector3(8, 8, 0); dice.GetComponent<Rigidbody>().AddForce(-transform.right * 300); dice.transform.Rotate(rotateX, rotateY, rotateZ); } } } |
左クリックを離したタイミングで、サイコロを新しく生成し、左に向かって投げるしくみを作っています。
生成のときに、サイコロの回転角(X軸、Y軸、Z軸)をランダムで変化させています。
プレハブのフィールドに、サイコロのPrefabデータを入れます。
ゲームプレイして、クリックしてみましょう。
クリックするたびに、古いサイコロは消え、新しいサイコロが振り出されます。
後編では、サイコロの出た目の数を取得できるようにします。
後編へ続く:サイコロを振る(後編)