本記事では、アニメーション機能を実際にUnityで動かしながら紹介していきます。
あまり難しい内容ではないので、初心者の皆さんもついてこれるのではないかと思います!
ちなみに、Unityってなんですか?初めて聞いた!という方は、この記事を読む前に以下の記事を一度読むことをおススメします。
目次
|アニメーションとは
Unityでゲーム開発をしていると、オブジェクトになにかしらの動きをさせたい!と思うときがありますよね。そんなときに便利なのがアニメーションという機能です。
オブジェクトの位置や大きさ、角度を時間経過とともに変化させることができます。
キャラクターが走るときの動きやダメージを受けた時に動きをつけることができるので、ゲーム開発の幅を広げることができます!
本記事では基本となるAnimationClipについて紹介します。AnimationClipは以下の3つの要素で構成されています。
- Animator:オブジェクトにアタッチされる。AnimatorControllerに再生を依頼する。
- AnimatorController:AnimationClipを管理する。
- AnimationClip:動きに関する情報を持っている。
概要のみの説明なので分かりにくいかと思いますが、現段階では3つのキーワードを覚えていただければ大丈夫です。
|アニメーションを作成する方法
ここからは、実際にアニメーションを作成していきます。
動きを設定する部分までの準備が少し長いですが、難しいことはないので頑張りましょう。
アニメーションビューを表示する
Unity上でアニメーションを作成するときには、アニメーションビューでの作業が必要となってきます。ですので、まずはアニメーションビューを表示しましょう。
今回は3Dオブジェクトにアニメーションをつけるので、Unityで3Dプロジェクトを作成してください。
作成したプロジェクトを開き、上のメニューバーにある「Window」→「Animation」→「Animation」を押してください。
そうすると別のウィンドウが表示されます。これがアニメーションビューです。
これはお好みで良いのですが、ウィンドウが分かれていると作業がしづらい方は、「Animation」と書かれたタブ部分をドラッグするとまとめることができます。
オブジェクトを作成する
初心者の方向けにオブジェクトについて簡単に説明します。
オブジェクトはキャラクターやアイテム、ライトやカメラなどといったゲーム内での構成要素を指します。
また、オブジェクトにはコンポーネントを与えることで機能を持たせることができます。
言い換えると、コンポーネント(機能の実装)のコンテナのようなものです。
アニメーションでは、位置や大きさ、角度の設定をするTransformと呼ばれるコンポーネントを変化させて動きを持たせています。
ですので、Transformコンポーネントを持ったオブジェクトを作成しましょう。
「Hierarchy」ウィンドウ上で右クリック→「3D Object」→「Cube」の手順で作成します。
お好きなオブジェクトを選んでもらってかまいません。
アニメーションクリップを作成
先ほど作成したオブジェクトをクリックすると、アニメーションビューに「アニメータ(Animator)とアニメーションクリップ(AnimationClip)を作成してください」と表示されます。
「Create」ボタンを押して作成しましょう。
そうすると、アニメーションクリップが作成できます。
任意の名前と、フォルダを選んで保存しましょう。
保存先のフォルダを見てみると、「(オブジェクトの名前).Controller」と「(アニメーションクリップ名).anim」が作成されているのが確認できます。
また、作成したオブジェクトのインスペクタに「Animator」コンポーネントが追加されていることも確認できます。
これで、アニメーション作成の準備は終わりになります。次から、実際にどんな動きを持たせるか設定していきます。
アニメーションを設定
アニメーション作成の準備が終わったので、実際に動きを設定していきます。
Transform内の位置、大きさ、角度を変化させることで、移動、拡大・縮小、回転といった動きを持たせていきます。
移動
オブジェクトの移動を設定します。
アニメーションビューにある「Add Property」→「Transform」→「Position」の横にある+ボタンを押しましょう。
追加された項目にはx、y、zの座標を入力する欄が追加されているのが確認できます。
アニメーションが時間ごとにどのように動くのかを確認したい場合は、下の方にある「Dopesheet」と「Curves」を確認します。
例えば、Position.xに5を入れてCurvesを見てみると曲線が描かれています。これは横軸が時間で縦軸が位置(今回はx座標)を示しています。
Dopesheetの方では、先ほどの曲線とは違い、ドットをクリックすることでx座標だけでなくy座標、z座標の移動先も確認できます。
拡大・縮小
続いて、拡大・縮小を設定していきます。
先ほど同様、「Add Property」→「Transform」→「Scale」の横にある+ボタンを押しましょう。
こちらはx、y、z方向それぞれに対して拡大・縮小するか倍率を設定できます。
せっかくですので、今回は時間をずらして設定しましょう。時間軸の0:20をクリックし、Scale.yに3を入力しましょう。
そうすると、0:20まではオブジェクトがy軸方向に拡大され、0:20以降は縮小していくアニメーションができます。
回転
最後に回転を設定します。
これまで同様、「Add Property」→「Transform」→「Rotation」の横にある+ボタンを押しましょう。
これまでの内容を踏まえると察するかと思いますが、回転に関してもx、y、zのパラメータを設定できます。このとき入力する値は回転角度なので、360と入力すると1回転を表します。
ここで注意していただきたいのですが、x、y、zはそれぞれ回転の軸を表しています。今回は、どの軸を使えばいいのか一瞬で判断できる方法があるので、そちらを覚えていただければ良いかと思います。
「右ねじの法則」でおなじみの方法です。まず、右手を用意します。次に親指をピンと立てます。あとは、Unityの画面を見ながら、回転させたい方向に合わせて親指以外の指を回してあげます(👍を作るイメージです)そうすると、親指の方向が回転の軸となります。
この方法を使って自由に回転の設定をしてみてください。
アニメーションを再生
設定が終わりましたら、いよいよアニメーションの再生です。
アニメーションビューの左上に「再生」ボタンがあるので押してみましょう。
思い通りの動きが実現できましたか?
今回は設定の部分をまとめてしまったのでできませんでしたが、実際は各設定(今回でいう移動、拡大・縮小、回転)ごとに再生してみて、正しい動作になってるか確認しながら開発するのが良いと思います。
ループさせたい場合は?
デフォルトの設定では一度実行すると終了してしまいます。
アニメーションの繰り返し実行は、アニメーションクリップコンポーネントで設定できます。
プロジェクトからアニメーションクリップを保存したフォルダに移り、作成したファイルをクリックします。インスペクタにある「Loop Time」にチェックを入れると繰り返し実行されるようになります。
「Loop Pose」は繰り返しのときの繋ぎが滑らかになる設定です。
「Cycle Offset」は次に繰り返されるアニメーションの開始位置を決められます。
|まとめ
いかがでしたか。アニメーションを使いこなせれば、無機質だったゲームに華が出てきそうですよね。また、視覚的にも分かりやすいですし、コードを書かなくても細かい設定ができるというのが嬉しいですよね。
皆さんもアニメーションを駆使して楽しい開発をしてみてください。