サイコロを振る(前編)
サイコロを振る(前編)

サイコロを振る(前編)

サイコロを振る(前編)

サイコロを振って、毎回異なる目が出るように、スクリプト作成しましょう。

振るたびに違う目がでるように、サイコロを投げたときに、回転角がランダムで変化するように作っています。

クリックするたびに、新しいサイコロが振り出されます。

※今回の記事は、前編、後編の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を記述します。

using System.Collections; using System.Collections.Generic; using UnityEngine; public class DiceDelete : MonoBehaviour { void Update() { if (Input.GetMouseButtonDown(0)) { Destroy(gameObject); } } } 123456789101112131415 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を記述します。

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); } } } 12345678910111213141516171819202122232425 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データを入れます。

ゲームプレイして、クリックしてみましょう。

クリックするたびに、古いサイコロは消え、新しいサイコロが振り出されます。

後編では、サイコロの出た目の数を取得できるようにします。

後編へ続く:サイコロを振る(後編)

この記事の監修・専門指導 枚方市のプログラミング専門スクール フタバゼミ 枚方くずは校

この記事で解説したUnityやC#の技術も、当校では直接個別指導しています。「むずかしいことをおもしろく」をモットーに、初心者から本格開発までサポート。樟葉駅から徒歩1分、まずはお気軽に体験会へお越しください。

枚方校の詳細を見る 無料体験に申し込む

関連記事
  • ビルドの画面サイズ
  • 静止中のオブジェクトをクリックで飛ばす
  • 触れている相手に一定間隔で力を加える
  • 特定の座標まで行けば跳ね返る
  • 倒れる方向をランダムにする
  • クリックした位置に力を加えて弾く
  • 3DのTextMeshProをスクリプトで操作
  • Random参照エラーの解決法
  • 1秒おきに座標をランダムにして落下
  • ジャンプの方向をランダムにする
< 前の記事 次の記事 >
📎📎📎📎📎📎📎📎📎📎