今回は、Untiyの2Dゲームでサイコロを実装してみます。平面の画像を使い、サイコロの目を変更して動いてる風にする感じですね。
はじめに
Unityのバージョンは2022.3.10f1です。
まずはサイコロの画像をドット絵で簡単に作成、下記の様な感じに6面を作成します。
画像は自分で作成しなくてもフリー画像でも問題ないです。
実装開始
作成した画像を全てUnity側に取り込み。
画像をすべて選択して、Inspectorから設定を変更。「PixelsPerUnit」、「FilterMode」などを変更しておきます。16×16のドット絵で作成しているので下記の様な設定に。
ヒエラルキーメニューにサイコロの1の目の画像を追加。
「UI」→「Legacy」→「Button」を追加。
位置、テキストを調整して下記の様な感じにします。
「START」ボタンを押したら画像がランダムに変化、何回か変化したら止まり数値を確定させます。
スクリプトを作成
下記スクリプトを作成。
using System.Collections; using UnityEngine; using UnityEngine.UI; public class DiceRoll : MonoBehaviour { [SerializeField] private Sprite[] _diceSprite; [SerializeField] private Button _btn; private SpriteRenderer _rend; private int _diceRollCount = 10; private int _spriteNum = 0; void Start() { _rend = GetComponent<SpriteRenderer>(); } public void RollingDice() { StartCoroutine(LoadDice()); } private IEnumerator LoadDice() { _btn.interactable = false; for (int i = 0; i <= _diceRollCount; i++) { _spriteNum = Random.Range(0, _diceSprite.Length); _rend.sprite = _diceSprite[_spriteNum]; yield return new WaitForSeconds(0.1f); } Debug.Log(_spriteNum + 1); _btn.interactable = true; } }
コルーチンでスプライトの画像を指定回数変化、debuglogでサイコロの目を出力しています。サイコロの画像をパラメータの配列に全て入れます。
後はボタンクリックで動作するようにすれば完成。
実行すると下記の様な感じになります。
画像の切り替え速度、変更回数は適当に変えても良いですね。