リアルとバーチャルの間

気まぐれに書いてます。

【Unity】ゲームエフェクトで必須テクニック1 UVアニメーション

今日は、東京マラソンですね。
運営主も参加したかったのですが、見事に応募時で落選してしまいまして
家でランナーたちを暖かい目で見ているわけです。

さて、Unityの話になりますが
ゲームのエフェクトやローポリゴンの3Dキャラクターのフェイスを
UVアニメーションでよくやります。
ということで3Dの表現をする上ではUVアニメーションは超基本なので
さくっとスクリプトと参考にさせて頂いたサイトなどの紹介をしておこうと思います。

まず、パラパラ漫画のような連番画像ができるように左上から右下へ向けて画像を作成する。
「8,16,32,64,128,256,512,1024.....」ピクセルで作成するのがテクスチャの基本です。
たとえば、256×256ピクセルとかね
f:id:amano-kiyoyuki:20130224140114p:plain

JSを作成して

var uvAnimationTileX = 4;
var uvAnimationTileY = 4; 
var framesPerSecond = 10.0;
 
function Update () {
	var index : int = Time.time * framesPerSecond;
	index = index % (uvAnimationTileX * uvAnimationTileY);
	var size = Vector2 (1.0 / uvAnimationTileX, 1.0 / uvAnimationTileY);
	var uIndex = index % uvAnimationTileX;
	var vIndex = index / uvAnimationTileX;
	var offset = Vector2 (uIndex * size.x, 1.0 - size.y - vIndex * size.y);
	renderer.material.SetTextureOffset ("_MainTex", offset);
	renderer.material.SetTextureScale ("_MainTex", size);
}

変数を「縦:横」何枚の画像で構成しているか記入する。

参考にさせていただいたサイト

来年はマラソンに参加したいなあー。