![見出し画像](https://assets.st-note.com/production/uploads/images/69576198/rectangle_large_type_2_331085a56a20175a96ada9185e88f129.png?width=1200)
毎朝30分ずつゲームを作ってみる【第十回】キャラクターのアニメーション成功
さて、今日は昨日うまくいかなかったMAP上でのキャラクターの歩行を修正していこうと思います。昨日の記事はこちら。
そもそもどのようにして動かそうとしていたか
まず、カウンターとフラグを用意します。フラグは最初はfalseにしておき、フラグがfalseである間、カウンターが1秒ずつ増えていくように設定しています。そして、カウンターが0~5の場合は歩行1の画像、6~10のときは歩行2の画像が表示され、10以上になるとフラグがtrueになり、同時にカウンターが0に戻る仕組みになっています。
キャラクターの向きに関しては、現在位置と、その前の瞬間の位置を常に取得し、前回の位置と今回の位置のX,Y座標が+かーかによって、向きを変更させています。
どのようにうまくいかなかったのか
さて、上記の設定でゲームを動かしてみたところ、一見うまくいっていました。しかし、動画撮影モードになると、何故か歩行1と2の切り替えがものすごく遅くなりました。何故だ……
理由解明
原因は、時間の足し方にありました。
Time.deltaTimeを使わなければいけなかったのです。
自分の不勉強のため、Time.deltaTimeについて、完全に理解しきれていないのですが、描画速度の端末依存を防ぐには、これが必要だったはず。
上の方で、「1秒ずつ増えていく」と書きましたが、それは何を基準とした「1秒」だったのかが、最初のスクリプトでは書かれていませんでした。
そのためうまくいかなかったのではないかと思います。
この辺りはしっかり頭で理解できた訳ではないため、少しずつ調べて納得していきたいです。
うまくいった動画はこちら。
#unity2d
— あまた節 (@anipanmrk2) January 9, 2022
歩行アニメーションうまくいった…?
Time.deltatimeは大事 pic.twitter.com/BlwlraFbJ8
さて、せっかく画像切り替えの歩行がうまくいったのに何ですが、キャラクターは基本的にLive2Dで動かそうかと考えています。
私はまだ、unity上でLive2Dを動かしたことがありません。そのため、明日はまず、unity上のLive2Dの動かし方を調べようと思います。
この記事が気に入ったらサポートをしてみませんか?