GodotにはAnimationPlayerという、コードを書かなくてもアニメーションを作ることができる機能がある。シーン上のオブジェクトのプロパティを変動させたりすることができるため、ちょっとした動きをつけたり、あとはスプライトアニメーションなどもできるっぽい。一応公式にも詳しい説明がある。
アニメーション — Godot Engine (stable)の日本語のドキュメント
ただ、微妙に知りたい情報が不足していたりするためざっと書いてみる。
今回はLabelを配置し、それがフェードするアニメーションを作ってみる。まずはシーンのルートにそのLabelとAnimationPlayerを配置する。
AnimationPlayerのノードを選択すると、シーンプレビューの下にアニメーション用のパネルが現れる。
最初は空になっているため、ここにフェードアニメーション用のタイムライン的なものを追加する。まずはこの「アニメーション」ボタンをクリックし、現れるメニューで「新規」を選択する。作成するアニメーション名を聞かれるため、適当に名前をつける。すると下記のようにタイムラインが追加される。
このタイムラインにLabelのModulateプロパティを割り当てたい。AnimationPlayerが選択されている状態でシーン上の各ノードを選択すると、ノードのプロパティにはキーフレームをアニメーションに登録するためのアイコンが表示される。
これをクリックすることで現在のプロパティの値をキーフレームとしてアニメーションに登録できる。ベジェ曲線はアニメーションのタイムライン上での値を変え方をどうするかの設定で、他にも色々と方法はあるようなのでどちらでもよい。色々試してみると面白そう。今回はとりあえずオフで。
するとこのようにキーフレームが追加される。ちなみにベジェの場合はRGBAそれぞれのタイムラインが追加される(アルファだけ設定したいとかであれば適宜削除も可能)。
アニメーションするためにはキーフレームを追加し、その時点でのプロパティの値を設定する。まずは0.5秒経った時に薄くしてみる。タイムラインの時間(0, 0.5, 1…と表示されている場所)をクリックするとキーフレームを追加する時間を指定できるため、まずはそこで0.5を選択する。
この状態でLabelのModulateを例えばアルファ50くらいにして再度キーフレームの追加ボタンを実行すると、キーフレームが作成される。同様にして、1秒のところにも元々のα値でキーフレームを追加する。
これでアニメーションプレイヤーの再生ボタンを実行すると実際にフェードされる状態が確認できる。自動で0秒の時点には戻ってくれないため、必要であれば0をクリックしてスタート地点に戻しておいてから確認する。
ちなみにタイムラインの右側にあるこのループっぽいボタンをクリックしてオンにしておけばループ再生してくれる。
また、その左の数字はタイムラインの長さ。これを増やせば1秒よりおおきいアニメーションも設定できる。
ループの左上にあるボタンは自動再生ボタン。これをオンにしておけば自動的に再生しておいてくれる。
AnimationPlayerには、デフォルトで再生するアニメーションを設定できる。固定で再生するならこれで十分だろう。
ちなみに、さっきの自動再生の設定がオンになっていないと、ここが勝手に無指定に戻ってしまったりするので、うまく自動再生されない場合はそのあたりを要確認。
とりあえず基本的な導入部分の解説をした。あとはメソッドでアニメーションを切り替えたりスピードを変えたり色々コントロールもできるし、イベントでアニメーションの終了時を判断したりもできる。色々使いこなすと面白そう。
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント