見出し画像

最近サボりがちだった

新しい知見が必要な部分を開発するとなると、途端に着手が億劫になる問題をなんとかしたい。

やりたかったこと

ゲーム中、ゲーム内時間を止めて、イベントアニメーションというか、カットインを入れたくて、といっても別に演出的な理由ではなく、迷路ゲームという性質上、視界が悪く、シーン内で起きてることがあまりに分かりづらいので、なにかしらカットインとして見せて伝える必要があるな、と。

んで、この処理には2つの「作業ポイント」があって、1つは「時間を止める」、もう一つは「カットインアニメーション」を作ること、となっている。これがすごく億劫だった。

時間を止める

Unityで時間を止める、というと

Time.timeScale = 0.0f;

と書いてあげるのは一般的かな、と思ってたんだけど、これはシステム全体の時間を止めてしまうこともあり、アニメーションすらも再生されないらしい。そして色々調べてみると、どうもその手法はやるべきではないことらしく、ゲーム内時間を止めたいなら、止めたいオブジェクト1つ1つに、ちゃんと一時停止処理をすべきであるらしいのだ。

たしかに動く箇所と動かない箇所があるわけだから、動かない箇所は明示してあげる必要はあるな、と思いつつ、この処理をいちいち書くのが面倒で、億劫だった。ひとまず組んではみたけど、多分まだ他に止めなきゃいけないところはありそうだなぁ。

カットインアニメーション

これが特に億劫で、Unityには、アニメーション処理の方法が大きく2種類ある。1つはAnimatorによるキーイング処理。もう1つはTimelineによる再生タイミング制御だ。後者はあくまでタイミング制御なので、オブジェクトを少し移動させるだけでも、Animatorでそれを定義し、Timelineでそのタイミングを提示してあげる必要がある。

言葉で言えば簡単そうだが、この移動物が人物とかだと、座標変更アニメーション歩行アニメーションとは別に存在するわけで、また歩行アニメーションは人物オブジェクトにアタッチできるものの、座標変更アニメーションは常時人物で使うわけではないから、人物にアタッチするのはあまり良くなさそうであり、なんかそんなこと(コンポーネント構造的な話)を考えてたら、だんだんと億劫になってきたのだ。

今後は

ひとまず、億劫で避けていたこの部分を作り上げてみたので、これを今度は再利用して、他のモンスターへ展開していきたいと思っている。

いただきましたご支援は、ゲーム開発の足しにさせていただきます。少しでも気になるな、と思っていただけたら、ぜひサポートお願いします!