[Unity] FF4、FF5のダメージ表示アニメーションをUnityで再現する

Pocket

ハイスコアガールのハルオ世代がほいほい釣れそうなFF4やFF5のダメージ数値が表示される時のアニメーションをUnityで再現してみます。実装方法が間違っているかもしれませんが懐かしむ感じで。

FFダメージ表示アニメーション(FF4~6?)

ff-popup-damage

こんな感じのアニメーションを作ってみます。

 

2015/1/24 触れるもの作ってみました →  [Unity] FF1からFF6までのダメージ表示アニメーションを再現する

 

 

 

実装方法

Twitterで教えていただいた方法

すべて答えが載っています。やったね!(Unity初心者の心の中:Canvas Groupって何だろう?文字表示が終わったという判定はどうやるのだろうか?)

 

アニメーション作成

まずはTextを作ります。Outlineコンポーネントを付けて装飾。フォントサイズは24。幅高さは30にしました。

WindowメニューからAnimationを選択。Animationウィンドウでアニメーションを作成していきます。Add Curveボタンを押し、DamagePopupAnimation.Animファイルを保存します。

ff001

数値がポンっと飛び出す感じにアニメーションを作成します。動きは好きなように作りましょう。

アニメーションのループ設定をOFFにします。

ff002

※本当は「何もしない状態」「数値が飛び出すアニメーション」「消えるときのアニメーション」「消えた後の状態」の4つアニメーションをコントロールしたかったのですが、判らなかったのでとりあえずポップアップするアニメーションだけ作りました。

※この部分ですがアニメーションを再生し終えたら、AステートからBステートに遷移させる…、なんてことができると思うのですよ・・・。ほいでAnimator.GetState的なメソッドで状態を取れたりすると思うのですよ・・・。今回ははまりそうだったのでパス。

 

テキスト用スクリプトの作成

作成したTextで「アニメーション終了イベント」を受け取りる為のスクリプトを作成します。

作成したらTextにスクリプトを追加します。

 

アニメーションイベントの追加

アニメーションが終了したときNumberTextScript.OnAnimationFinish(上で作成したスクリプトのメソッド)が呼ばれるように設定します。Animationウィンドウに行き、最終フレームにイベントを追加します。

ff003

イベントには先ほど追加したOnAnimationFinishを指定します。

ff004

 

テスト再生とプレハブ化

再生されたでしょうか。よければ作成したTextをPrefab化して消します。Canvasは使うのでそのままで。

 

休憩

なれない作業でここまでで1.5時間くらいかかってたりします。慣れている人で2~3分程度じゃないだろうか。

 

ダメージ表示用GameObjectの作成

各文字のアニメーションを行い、自分自身の破棄までの一連の動作を行うスクリプトを作成します。

行っていることは

  • 一気に透明化できるようにRootとなるGameObject+Canvas Groupの作成(破棄するのも簡単だしね)
  • 一定時間ごとに1文字ずつTextオブジェクトを生成する
  • アニメーション終了チェック
  • Canvas GroupのAlpha値を変えながらフェードアウト処理
  • 自分自身の破棄

です。

コルーチンで処理していますが、Updateメソッド内でTime.deltatimeを使った処理の方が正しいかもしれません。フェードアウトしていく処理もText側のアニメーションで作成したほうがデザイン側とコーディング側が分かれて幸せになれるはずですが・・・。

 

左クリックでポップアップするテストスクリプトを作成(テスト用)

作成したらCameraにでも追加しましょう。

 

実行

クリックするとぽろろんっと表示される!

 

まとめ

どうにか作ってみましたが「Unityの流儀に反しているかも?」とか、「この方法は一般的なんだろうか?」みたいな疑問がいっぱいです。

 

参考URL

Animatorの終了判定
http://perillasoft.blog75.fc2.com/blog-entry-48.html

コルーチンについて
http://qiita.com/fujimisakari/items/811e350cbaeb45b6165e

Pocket

希木小鳥

Diablo1でハクスラの世界に。今はPath of Exileをプレイ中。長くやっていてもNoob属性は常に付いている。そのくらい行き当たりばったり。オタクになれないゲーマー。

You may also like...