Unityな日々(Unity Geek)

Unityで可視化アプリを開発するための試行錯誤の覚書

HOTween Visual Editorをインストールする

HOTweenのdownloadページで、HOTween Visual Editorのリンクをクリックし、ZIPファイルを保存
f:id:yasuda0404:20120804100833p:plain

ZIPファイルを解凍。"HOTweenEditor"と言うフォルダができる。
f:id:yasuda0404:20120804100925p:plain

フォルダの中には、packageファイルがある。これを適当な場所に移動。(僕の場合は、Unity開発用に使っているフォルダの下に"userpackages" と言うフォルダを作り、そこにパッケージを入れている。)
f:id:yasuda0404:20120804101106p:plain

Unityを起動。Assets-Import Package...-Custom Package... を選択。
f:id:yasuda0404:20120804101825p:plain

さきほど保存したUnity Editorのパッケージを選択
f:id:yasuda0404:20120804101837p:plain

すべて(All)選択して、"Import"をクリック。
f:id:yasuda0404:20120804101849p:plain

しばらくするとインポートが完了。Projectビューに"Holoville"というフォルダができる。この中にHOTween Editorのアセットが入っている。
f:id:yasuda0404:20120804101902p:plain

インストールが正常に完了すると、Windowの下に"HOTween Visual Editor"が追加されている。
f:id:yasuda0404:20120804105023p:plain

選択すると"HOTween Visual Editor"パネルが開く。パネルをドラッグしてUnity Editor内に埋め込むことも可能。
f:id:yasuda0404:20120804105059p:plain

"HOTween Visual Editorパネルで"Add HOTWeen Manager"をクリック
f:id:yasuda0404:20120804105711p:plain
シーンに"HOTWeen Manager"が追加される
f:id:yasuda0404:20120804110023p:plain

Tweenしたいオブジェクトを選択し(下の場合"Cube")、"HOTweenEditor"の”Tween Selection"をクリック。
f:id:yasuda0404:20120804110429p:plain

Tween可能なプロパティ、コンポーネントのうちからTweenしたいものを選択。例えば、"transform"をTweenしたい場合は、"transform"をクリック。
f:id:yasuda0404:20120804110439p:plain

この状態で"Tween This"をクリック
f:id:yasuda0404:20120804110852p:plain

パネルの真ん中辺りの"Add a property to animate"をクリック
f:id:yasuda0404:20120804111552p:plain

Tweenしたいプロパティを選択。例えば、position(UnityEngine.Vector3)を選択すると、
f:id:yasuda0404:20120804111853p:plain

パネルに"position"が追加される。positionパネルの値と、"From"以下の共通項目の値を適切に変更。
f:id:yasuda0404:20120804111839p:plain

シーンを再生するとTweenが実行される
f:id:yasuda0404:20120804112552p:plain


                          • -

また、UnityのComponentにHOTweenと言うコンポーネントが追加される。Tweenの対象オブジェクトを選択し、Component-HOTween-HOTweenComponentを選択すると...
f:id:yasuda0404:20120804104034p:plain

"HOTweenComponent (script)”コンポーネントが追加される。
f:id:yasuda0404:20120804104002p:plain

"Add Tween"をクリックすると、パネルが開く。どのコンポーネントにTweenを適用するかを選択。
f:id:yasuda0404:20120804104302p:plain

例えば、"Transform"コンポーネントを選択

HOTweenのTips

HOTweenのベストプラクティスのページに書かれているTips。

  • 最初のTweenを作る前に、HOTween.Initを実行する。HOTweenのインスタンスは削除せず使う。
  • TweenのIDを保存する際は、Id(テキスト)ではなく、IntId(整数指定)を使う。
  • 同一の Tweener/Sequenceを再作成しないこと。autokillビヘイビアはfalseにしてTweenを保存し、必要な時に再度使う。
  • HOTweenのStaticメソッドを使う場合は、代わりにTweener/Sequenceを保存し直接呼ぶ方が断然早い。
  • 多数のTweenを走らせる場合(マシンに依存するが500以上?)OverwrightManagerをディスエイブルする

フレームとUpdate(), FixedUpdate()

Unityは「フレーム」と言う概念で描画を繰り返す。映像と同じ考えだ。
ひとつのフレームの動作はfunction Update(){} の中に記述するが、Update()は実行間隔は一定ではない。
そこで、前のループからの時間経過を表すTime.deltaTimeを使う。定めた速度にTime.deltaTimeを掛け合わせれば、正しい速度で変化する。

function Update() {
transform.Rotate(0, 5 * Time.deltaTime, 0);
}


また、Unityには、FixedUpdate(){} と言う関数も用意されている。これはフレームとは別に、一定時間間隔で実行される。デフォルトは0.01秒間隔。物理演算用に作られたものらしい。


以上、書籍『Unity入門』 - Unity におけるフレームと Updateがまとまっている。
またWhat's the difference between Update and FixedUpdate? When are they called? - Unity Answersはさらに詳しい。

MonoDevelopの文字化けを修正する

UnityScriptのデフォルトエディタはMonoDevelopだが、インストール状態だと文字化けが生じる
この修正方法は次の通り
参考:MacのMonoDevelopの日本語表示の文字化けの直し方(3.5に同梱されているものの場合) - 強火で進め

Unityフォルダの中の"MonoDevelop.app"で右クリック。「パッケージの内容を表示」
f:id:yasuda0404:20120804191247p:plain

開かれたフォルダから、次のパスをたどって、gtkrcを開く
Contents/Frameworks/Mono.framework/Versions/Current/etc/gtk-2.0/gtkrc

font              = "Lucida Grande 14"

の次の行に

font_name ="Hiragino Kaku Gothic Pro 10"

を追加
注)最終行に、font = "Lucida Grande 12"というのがあるが、そちらではない。
f:id:yasuda0404:20120804191407p:plain

MonoDevelopを起動し、MonoDevelo-UnityのPreference...を開く
f:id:yasuda0404:20120804191549p:plain

「ビジュアルスタイル」の

  • ユーザーインターフェース言語
  • パッド用言語
  • 出力パッド用カスタム言語

の3箇所のフォントを"Hiragino ProN"に変更
f:id:yasuda0404:20120804191724p:plain
f:id:yasuda0404:20120804191630p:plain

「Fonts」の3つのフォントを"OSAKA 12"(等幅フォント)に変更
f:id:yasuda0404:20120804191925p:plain
f:id:yasuda0404:20120804192048p:plain

MonoDevelopを再起動すると、表示は正常になっているはず。

オブジェクトのまわりを回転させる

transform.RotateAround()関数を使う。

下の例では、targetオブジェクトのupベクター(Y軸)の周りを秒速45度でまわる。
第一引数のVector3.zeroはこのスクリプトがアタッチされるオブジェクトの回転基準点らしい。

var target:Transform;

function Start () {

}

function Update () {
	transform.RotateAround(Vector3.zero, target.up, 45*Time.deltaTime);
}

オブジェクトに物理的な特性を加える(Rigidbody)

対象オブジェクトに、Rigidbody コンポーネントを付加する。


例えば、対象オブジェクトを一定速度で動かす場合、対象オブジェクトに次のスクリプトを付加。
秒速1mで上方向に移動する

function Start () {
	rigidbody.velocity = Vector3.up;
}

function Update () {
	
}

Lightmappingを使う

次のシーンに対してLightmappingを行う。
f:id:yasuda0404:20120804234249p:plain

Windows-Lightmappingで、Lightmappingウィンドウを開く
f:id:yasuda0404:20120804234344p:plain
レイアウト内に埋め込むと便利
f:id:yasuda0404:20120804234419p:plain

ヒエラルキービューでLightmapを焼き付けたいオブジェクトを選択し、Lightmappingビューで"Lightmap Static"にチェックを入れる。Lightmapを焼き付けたいオブジェクト全てに対し行う。
f:id:yasuda0404:20120804234437p:plain

ヒエラルキービューでライトを選択し、LightmappingビューのBaked Shadowsで影の種類を選ぶ。影を付けたいライトに対し設定を行う。
f:id:yasuda0404:20120804234715p:plain

"Bake Scene"をクリック。しばらく計算が行われる。
f:id:yasuda0404:20120804234845p:plain

Lightmapが作成される。シーンからライトを削除してもライトがあるかのようなテクスチャーと影が得られる。
f:id:yasuda0404:20120804234941p:plain

より自然なLightmapを作るには、shadow samplesの値を増やす、shadow radiusを増やす
f:id:yasuda0404:20120804235125p:plain
Skylightを加える、Ambient Occlusionを加える、等がある。
f:id:yasuda0404:20120804235442p:plain

f:id:yasuda0404:20120804235209p:plain