2Dのサイコロを動かしてみた【Unity】

今回は、Untiyの2Dゲームでサイコロを実装してみます。

平面の画像を使い、動いてる風にする感じですね。

はじめに

Unityのバージョンは2021.3.3f1です。

まずはサイコロの画像を簡単に作成、下記の様な感じに6面を作成します。

1~6を順番に動かすと下記の様な感じに。画像は自分で作成しなくてもフリーのものでも問題ないです。

実装開始

Unity側に作成した画像を全て取り込み。

PPU、FilterModeなどを変更しておきます。この辺は画像に合わせて変更ですね。私の場合はドット絵で作成しているので下記の様な設定に。

ヒエラルキーメニューにサイコロの1の画像を追加。

UI→Buttonを追加。

位置、テキストを調整して下記の様な感じにします。

「START」ボタンを押したら画像がランダムに変化、何回か変化したら止まり数値を確定させます。

スクリプトを作成

下記スクリプトを作成。

using System.Collections;
using System.Collections.Generic;
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でサイコロの目を出力しています。

サイコロの画像をパラメータの配列に全て入れます。

後はボタンクリックで動作するようにすれば完成。

実行すると下記の様な感じになります。

画像の切り替え速度、変更回数は適当に変えても良いですね。

タイトルとURLをコピーしました