読者です 読者をやめる 読者になる 読者になる

196の日記

完全に開発メモと雑談、その他忘れそうな計算式などを書き溜める場所になっています!

Unity ダメージ表示UIを作る

RPGとかでよくあるやつ!9999みたいな!さて腰を据えて作ろうかなと思って10秒経たずに素晴らしいサイトを見つけてしまった笑 トップに表示されるぐらいだから、おそらく誰もが一度は見たことあるであろうサイトさんですが、、笑

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

僕のFF魂をくすぐりました笑 もう参考にさせてもらうしかない!


ベースはありがたく使用させていただくことに

Animationなんてチュートリアルで触って以来です。ただいい機会なので慣れておきたい。サイトさんにはここら辺の設定は割愛されていたので自分なりにとりあえずシンプルに実装して見た。

f:id:thinline196:20170107182237p:plain


y座標を少し移動させるだけ!多分、同じことをやっている笑 終了判定のスクリプトはほぼそのまま使用させていただきました。こちらの終了判定は、のちに実装するフェードアウトを、全ての数字が表示し終わったタイミングで実行するために使用されています。


メインのスクリプトの方は若干いじらせてもらいました。具体的には、スクリプトを初めからダメージ管理オブジェクトにつけて置いて、DamagePopUp()メソッドに引数としてダメージとワールドの表示場所を渡して呼び出せば、いつでもダメージのアニメーションが表示されるようにしました。




スクリーン座標の計算

ダメージは当然、受け手付近に表示させなければいけません。参考にさせていただいたサイトさんはこちら。

UnityのCameraが使う3つの座標系 - テラシュールブログ
【Unity】【uGUI】Screenの座標とWorld(3D)座標の変換について - テラシュールブログ
スクリーン座標の取得 凛(kagring)のUE4とUnityとQt勉強中ブログ


結果的には、MainCameraのWorldToScreenPoint()メソッドを使用することで、なんの苦労もなくできてしまいました。この時注意することは、MainCameraぐらいです。普段使用しているcameraオブジェクトのtagをMainCameraにして置いてください。そうすることで、スクリプト上から Camera.main でアクセスできてしまいます。今の所、カメラを複数使用していないので、なんのエラーもなく座標を変換することができました。



、、、先人さんたちに本当に感謝です。