![見出し画像](https://assets.st-note.com/production/uploads/images/55704383/rectangle_large_type_2_f7117edffbacb469aa36da3d3e13b3b6.jpg?width=1200)
最近サボりがちだった
新しい知見が必要な部分を開発するとなると、途端に着手が億劫になる問題をなんとかしたい。
やりたかったこと
ゲーム中、ゲーム内時間を止めて、イベントアニメーションというか、カットインを入れたくて、といっても別に演出的な理由ではなく、迷路ゲームという性質上、視界が悪く、シーン内で起きてることがあまりに分かりづらいので、なにかしらカットインとして見せて伝える必要があるな、と。
んで、この処理には2つの「作業ポイント」があって、1つは「時間を止める」、もう一つは「カットインアニメーション」を作ること、となっている。これがすごく億劫だった。
時間を止める
Unityで時間を止める、というと
Time.timeScale = 0.0f;
と書いてあげるのは一般的かな、と思ってたんだけど、これはシステム全体の時間を止めてしまうこともあり、アニメーションすらも再生されないらしい。そして色々調べてみると、どうもその手法はやるべきではないことらしく、ゲーム内時間を止めたいなら、止めたいオブジェクト1つ1つに、ちゃんと一時停止処理をすべきであるらしいのだ。
たしかに動く箇所と動かない箇所があるわけだから、動かない箇所は明示してあげる必要はあるな、と思いつつ、この処理をいちいち書くのが面倒で、億劫だった。ひとまず組んではみたけど、多分まだ他に止めなきゃいけないところはありそうだなぁ。
カットインアニメーション
これが特に億劫で、Unityには、アニメーション処理の方法が大きく2種類ある。1つはAnimatorによるキーイング処理。もう1つはTimelineによる再生タイミング制御だ。後者はあくまでタイミング制御なので、オブジェクトを少し移動させるだけでも、Animatorでそれを定義し、Timelineでそのタイミングを提示してあげる必要がある。
言葉で言えば簡単そうだが、この移動物が人物とかだと、座標変更アニメーションと歩行アニメーションとは別に存在するわけで、また歩行アニメーションは人物オブジェクトにアタッチできるものの、座標変更アニメーションは常時人物で使うわけではないから、人物にアタッチするのはあまり良くなさそうであり、なんかそんなこと(コンポーネント構造的な話)を考えてたら、だんだんと億劫になってきたのだ。
できた!
— ウタゲ🎃うさ耳カボチャ系ゲーム実況者 (@utage_studio) June 29, 2021
ずっと、面倒くさくって(!?)先延ばしにしてた、
ゲーム中のカットインアニメーションを実装できた!!!!#Unity #indieGameDev #gameDev pic.twitter.com/4iJ3foSqmh
今後は
ひとまず、億劫で避けていたこの部分を作り上げてみたので、これを今度は再利用して、他のモンスターへ展開していきたいと思っている。
いただきましたご支援は、ゲーム開発の足しにさせていただきます。少しでも気になるな、と思っていただけたら、ぜひサポートお願いします!