前回カードをめくる方法をアップしました
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軸が関係するなんて目からウロコです