fc2ブログ
 
■プロフィール

クリエイトウェーブ

Author:クリエイトウェーブ
開発における、諸々を書いていきたいなと思っています。
mail : info@createwave.jp

■最近の記事
■カテゴリー
■最近のコメント
■月別アーカイブ

■最近のトラックバック
■ブログ内検索

■RSSフィード
■リンク
[Unity 3D]GUIを回転させる
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のべき乗で無くてもよい
・元画像まんまの画質・サイズで表示できる
などの利点があります。

カテゴリー:Unity | TM(0) | CM(0)
前のページ 次のページ