ゾンビとUnityとUE4

ゾンビネタとUnity/UE4でのゲーム制作についてつづるブログです。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

Unity オブジェクトを加速・減速させる時に超便利な無料アセット iTween

iTween が Unity 5 に対応しました。
最新版の iTween をアセットストアからダウンロードすれば、Unity 5 でも動作するはずです。


iTween 1iTween 2

Unity 指定フレームの指定距離内でオブジェクトを加速、減速させる
http://bosukete666.blog.fc2.com/blog-entry-217.html

Unity 指定フレームでオブジェクトを等速直線運動させる
http://bosukete666.blog.fc2.com/blog-entry-232.html

スクリプトでオブジェクトを移動させる基礎的な処理は上記の記事に書いた。
処理する時間がフレームで指定されているわけではなく、時間や移動距離のパーセンテージ指定で良いなら、非常に便利なアセットがあった。

iTween for Unity by Bob Berkebile (pixelplacement)
http://itween.pixelplacement.com/

Unity のアセットストアで検索するか、iTween の公式サイトからアセットストアのダウンロードページに飛ぶことができる。
iTween公式のドキュメントとサンプルスクリプトを見れば使い方が分かるくらい簡単。

日本語での簡単な説明は以下。

Unity - トゥイーンライブラリiTweenを使用する - ActionScript入門Wiki
http://www40.atwiki.jp/spellbound/pages/1604.html

何と言っても、物体の移動、視線移動、回転、拡大縮小、色変化、といった動きに対して32種類のイージング関数から選べるのが素晴らしい。

公式のドキュメントにもリンクがあるが、各イージング関数でどんな動きを表現できるか目で見て確認できるデモがあった。

イージング関数のデモ
http://www.robertpenner.com/easing/easing_demo.html

イージング関数は設定できないが、シェイク(ガタガタと揺らす動き)、パンチ(飛び出て跳ね返る動き)、カメラフェード(画面全体のフェードイン・アウト)、スタブ(オーディオクリップのヴォリュームとピッチのフェードイン・アウト)も処理できる。
いずれもメソッドをひとつ呼ぶだけ。
他にも、複数の点を曲線で補完したパスを簡単に作成でき、そのパスに沿ってオブジェクトを移動させることもできる。

実際に使ってみて、使いにくいと感じたところは、イージング関数の指定方法。
名前の文字列指定なので、スペルミス、コピペミスをする。
イージング関数を指定するには iTween.Hash() を使わなければならないが、これだとコンパイル時のチェックができない。
シーンを実行してコンソールにヌルポの束が表示されて初めて分かる。
コンパイル時にチェックできるなら、それに越したことはない。

こんな拡張クラスを作れば、もう少し使いやすくなる?

public class iTweenEx {
public const string EASE_TYPE = "easetype";
public const string LOOP_TYPE = "looptype";
public enum EaseType {
InQuad, OutQuad, InOutQuad,
InCubic, OutCubic, InOutCubic,
InQuart, OutQuart, InOutQuart,
InQuint, OutQuint, InOutQuint,
InSine, OutSine, InOutSine,
InExpo, OutExpo, InOutExpo,
InCirc, OutCirc, InOutCirc,
InBounce, OutBounce, InOutBounce,
InBack, OutBack, InOutBack,
InElastic, OutElastic, InOutElastic,
Linear, Spring,
}
public enum LoopType {
None, Loop, PingPong,
}
public static string ToString(EaseType t) {
string[] s = new string[]{
"easeInQuad", "easeOutQuad", "easeInOutQuad",
"easeInCubic", "easeOutCubic", "easeInOutCubic",
"easeInQuart", "easeOutQuart", "easeInOutQuart",
"easeInQuint", "easeOutQuint", "easeInoutQuint",
"easeInSine", "easeOutSine", "easeInOutSine",
"easeInExpo", "easeOutExpo", "easeInOutExpo",
"easeInCirc", "easeOutCirc", "easeInOutCirc",
"easeInBounce", "easeOutBounce", "easeInOutBounce",
"easeInBack", "easeOutBack", "easeInOutBack",
"easeInElastic", "easeOutElastic", "easeInOutElastic",
"linear", "spring",
};
return s[(int)t];
}
public static string ToString(LoopType t) {
switch (t) {
case LoopType.None: return "none";
case LoopType.Loop: return "loop";
case LoopType.PingPong: return "pingpong";
}
return null;
}
}

iTween.Hash(iTweenEx.EASE_TYPE, iTweenEx.ToString(iTweenEx.EaseType.Linear))
iTween.Hash(iTweenEx.LOOP_TYPE, iTweenEx.ToString(iTweenEx.LoopType.PingPong))

なんかタイプする文字数が異様に増えたが、少なくとも iTweenEx を使えば、easetype と looptype の値が正しいかどうかをコンパイル時にチェックできる。
このクラスが威力を発揮するのは、Inspector で easetype をいじれるようにするとき。

public class NewBehaviourScript : MonoBehaviour {

public iTweenEx.EaseType ease_type;

以下略

こんなふうにやれば、Inspector に easetype の一覧を表示でき、リストの中から好きな easetype を選ぶ事が出来る。
シーンを実行して実際にオブジェクトの動きを見て「んー、ちょっと違うなぁ」と思ったら、別の easetype に変えて行くという調整がしやすくなる。

iTween 3

今回作ったプロジェクト一式(295k)
https://drive.google.com/file/d/0B5l1YkxnaVHoa1A3NHE4Z3dBSXM/edit?usp=sharing

※NewBehaviourScript.csがオブジェクトをアニメーションさせてるスクリプト。Mainに貼り付けてます。
※iTweenEx.csも同梱。

 
スポンサーサイト

- 0 Comments

Add your comment

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。