見出し画像

毎朝30分ずつゲームを作ってみる【第十回】キャラクターのアニメーション成功

 さて、今日は昨日うまくいかなかったMAP上でのキャラクターの歩行を修正していこうと思います。昨日の記事はこちら。

そもそもどのようにして動かそうとしていたか

 まず、カウンターとフラグを用意します。フラグは最初はfalseにしておき、フラグがfalseである間、カウンターが1秒ずつ増えていくように設定しています。そして、カウンターが0~5の場合は歩行1の画像、6~10のときは歩行2の画像が表示され、10以上になるとフラグがtrueになり、同時にカウンターが0に戻る仕組みになっています。

 キャラクターの向きに関しては、現在位置と、その前の瞬間の位置を常に取得し、前回の位置と今回の位置のX,Y座標が+かーかによって、向きを変更させています。

どのようにうまくいかなかったのか

 さて、上記の設定でゲームを動かしてみたところ、一見うまくいっていました。しかし、動画撮影モードになると、何故か歩行1と2の切り替えがものすごく遅くなりました。何故だ……

理由解明

 原因は、時間の足し方にありました。
Time.deltaTimeを使わなければいけなかったのです。
自分の不勉強のため、Time.deltaTimeについて、完全に理解しきれていないのですが、描画速度の端末依存を防ぐには、これが必要だったはず。
上の方で、「1秒ずつ増えていく」と書きましたが、それは何を基準とした「1秒」だったのかが、最初のスクリプトでは書かれていませんでした。
そのためうまくいかなかったのではないかと思います。
この辺りはしっかり頭で理解できた訳ではないため、少しずつ調べて納得していきたいです。

うまくいった動画はこちら。

 さて、せっかく画像切り替えの歩行がうまくいったのに何ですが、キャラクターは基本的にLive2Dで動かそうかと考えています。
私はまだ、unity上でLive2Dを動かしたことがありません。そのため、明日はまず、unity上のLive2Dの動かし方を調べようと思います。

この記事が気に入ったらサポートをしてみませんか?