前回カードをめくる方法をアップしました
everydayisagoodday.hatenadiary.com
これはY軸を中心にオブジェクトを回転させる方法でしたが
今回はZ軸を中心にオブジェクトを回転させる例としておみくじルーレットを作ってみます
1.ルーレット盤と針の画像を用意し
ルーレット盤の画像をシーン内にドラッグ&ドロップ
2.インスペクターの位置X Yは0にしておく
次に針の画像をシーン内にドラッグ&ドロップ
3.インスペクターの回転Zを180にして向きを逆にする
レイヤーの順序を1にしてレーレット盤より上に表示されるようにする
4.ヒエラルキーの+をクリックしUI/古い機能/テキスト(kekka)を追加
5.テキストの位置を中央下 フォントサイズ 文字の色などを設定
6.プロジェクトタブにカーソルを持っていき右クリックでRouletteというスクリプトを作成
7.Rouletteを編集
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; public class Roulette : MonoBehaviour { [SerializeField] float rotateSpeed=800f; public Text kekka; private float speed; private bool isStart = false; private bool isStop = true; void Update() { if (Input.GetKeyDown(KeyCode.Space) && !isStart && isStop) //スタート { kekka.text = "おみくじ"; speed = rotateSpeed; isStart = true; isStop = false; } else if (Input.GetKeyDown(KeyCode.Space) && isStart && !isStop) //ストップ { isStop = true; } if (isStart && !isStop) //回転 { transform.Rotate(0, 0, speed * Time.deltaTime); } else if (isStart && isStop) //スローダウン->STOP { transform.Rotate(0, 0, speed * Time.deltaTime); speed *= 0.98f; if (speed < 0.9) { Vector3 vec = transform.localEulerAngles; if (vec.z < 0) vec.z += 360; Hantei(vec.z); } } } private void Hantei(float kakudo) { if (0 <= kakudo && kakudo < 18.0) //大凶 { kekka.text = "大凶"; } else if (18.0 <= kakudo && kakudo < 162.0) //吉 { kekka.text = "吉"; } else if (162.0 <= kakudo && kakudo < 180.0) //大吉 { kekka.text = "大吉"; } else if (180.0 <= kakudo && kakudo < 234.0) //凶 { kekka.text = "凶"; } else if (234.0 <= kakudo && kakudo < 288.0) //中吉 { kekka.text = "中吉"; } else if (288.0 <= kakudo && kakudo < 360.0) //小吉 { kekka.text = "小吉"; } isStart = false; } }
8.Rouletteをルーレット盤のオブジェクト(omikuji)にドラッグ&ドロップ
9.omikujiのインスペクターのスクリプト内にkekkaをドラッグ&ドロップ
これで実行しスペースキーを押すとルーレットが回転しもう一度押すとルーレットが止まり結果が表示されます
2Dの表示物を作るのにZ軸が関係するなんて目からウロコです