投稿日:2011-07-19 Tue
Pです。基本的にGUIはRotationなどで回転させることができません。
しかしGUIの用途で回転を実現したいことは多々あると思います。
例えば制限時間をアナログ時計の針で表現したい場合です。
以下のような方法でとりあえず回転できるようです。
針の素材をpng32で作る。サイズは2のべき乗である必要なし。
ここではW100×H100で用意し、中央に回転軸がくるよう調整する。
空のGameObjectを作って以下のScriptを割り当てる。
「RotationTest.cs」
using UnityEngine;
using System.Collections;
public class RotationTest : MonoBehaviour {
public Texture2D texture;
public float rotation;
void Update() {
rotation += 0.2f;
}
void OnGUI() {
Matrix4x4 matrix = GUI.matrix;
{
//Screen座標(20, 40)の位置に表示
GUIUtility.RotateAroundPivot(rotation, new Vector2(20 + 50, 40 + 50));
GUI.DrawTexture(new Rect(20, 40, 100, 100), texture);
}
GUI.matrix = matrix;
}
}
さらにInspectorパネルのTextureにpng素材を割り当てます。
あとはTime.timeなどで時間を制御してやればアナログ時計っぽくなるはずです。
GUIとして制御するので
・Cameraを気にする必要が無い
・position.zでGUI同士の重ね順を制御できる
・サイズが2のべき乗で無くてもよい
・元画像まんまの画質・サイズで表示できる
などの利点があります。
△ PAGE UP