【Unity】ウディタ・RPGツクール風 簡易アニメーションスクリプト紹介

2022-02-15Unity Tips

こんなお悩みをお持ちの方向け
  • Animation・Animatorをいちいち作成・設定するのがだるい
  • 設定をインスペクター上だけで完結させたい(色んなファイルやウインドウを操作しなくてもいいようにしたい)

シンプルなパラパラアニメの実装が意外と面倒

アニメーションの遷移制御やフレーム単位の細かな設定を行う場合、Unityのアニメーションは非常に優秀だと思います。

一方で、ウディタやRPGツクールでお馴染み、一枚アニメーション画像を分割してパラパラマンガのように表示したいだけの場合、やりたいことの割に結構手間がかかってめんどいっす。

<必要な手順>

  1. Animationファイルの作成
  2. オブジェクトにAnimatorコンポーネントを追加
  3. AnimatorコンポーネントにAnimationを設定
  4. Animationの設定・変更はAnimationウインドウで行う

いちおうSpriteEditorで分割したファイルをまとめてシーンビューに置くと、自動でAnimation作ってくれたりはするんですが、複数ウインドウを操作しないと設定・変更できないのがやっぱりネック。

という訳で、

  1. オブジェクトにアタッチすれば、
  2. あとはすべてインスペクター上だけで設定できる

そんなウディタ・RPGツクール風のスクリプトを作ってみました。

実行例

Spriteオブジェクトに、スクリプト「WoditaLikeAnimator」を設定します。

(UIならImageオブジェクトにスクリプト「WoditaLikeUIAnimator」を設定)

Texture2Dという項目に、実行したいアニメーション画像を設定します。

(今回はぴぽや様からお借りした素材を使わせてもらいます)

あとは、

  • SplitWidthとHeight:アニメーション画像を分割する縦サイズ・横サイズ
  • IntervalSeconds :分割した画像の表示時間(秒)
  • StartとEndPattern:分割したパターンの何番目から何番目までを表示するか(EndPatternは0を設定しておくと自動で最大パターン数を設定)

らへんをお好みで設定します。

今回は800×600に分割した画像の1~15パターンを、0.1秒ずつループしながらアニメーションする設定にしてみました(今回はループさせたいので、16パターン目の空画像を除外)。

実行結果はこんな感じです。

メリット・デメリット

処理負荷の観点から、弾幕シューティングやアクションで多用するのにはたぶん不向き。RPGのターン制バトル演出やイベント、ADVのノベルパートなど、比較的動作の軽量な場面で使う分には便利かなと思います。

また、プログラマーであればDoTweenを使った方が柔軟だと思うので、スクリプトを直接いじるのが大変な初心者さんやデザイナーさん向け。

詳細は下記の通り。

メリット

  • スプライトエディターで分割しなくてもスクリプト側で自動分割してくれる
  • 設定がインスペクター上だけで完結する
  • 再生間隔や開始・終了パターン、往復設定を手軽に切り替えられる

デメリット

  • スクリプト側で起動時に画像分割処理を行っているので、動作負荷は高め
  • パターン毎に切り替えフレームを個別設定したり、アニメーションしながら表示位置を変更するなどの細かい制御は不可

導入手順

下記フォルダのパッケージをインポートしてください。

あとの手順は先程の実行例やReadMe参照。

設定項目解説

ReadMeにも書いてありますが、いちおうこっちにも載せておきます。

IntervalSeconds以降の項目はすべてゲーム再生中でも変更可能なので、実際に動かしてみながら最適な設定を模索するのがオススメです。

項目名設定内容
Texture2Dアニメーションの画像ファイルを設定
Pixcel Per Unit1ユニットのピクセル数(テクスチャと同じ値推奨)
Pivot画像の表示起点をどこにするか。0.5が中心
SplitWidthテクスチャ画像を分割する横幅
SplitHeightテクスチャ画像を分割する縦幅
Interval Secondsパターンの切替秒数
Start Patternアニメーションの開始パターン番号(最小1)
End Patternアニメーションの終了パターン番号。
0を設定しておくと、自動で最大パターンが設定されます
Loopアニメーションをループさせるかどうか
Round Tripアニメーションを往復させるかどうか
DestroyIfCompletedアニメーション完了時にオブジェクトを破棄するかどうか
※Loop時は絶対破棄されないので注意

WoditaLikeって?

「Wolf RPG Editor(通称ウディタ)」というゲーム開発ツール風ということです。

もともとウディタ出身の自分としては、簡単なアニメーションはウディタみたいに1画面でぱぱっと設定できたら楽なのになーと思っていたので、それっぽい構成およびネーミングにしてみました。

ウディタのピクチャ表示機能

同梱素材について

ぴぽや様の素材をサンプルとして活用しました(二次配布OKを確認済)。

ありがとうございました!

ぴぽやblog – ゲーム制作記とゲーム制作に役立つ画像素材や情報記事を公開しています (pipoya.net)

Posted by yuumekou