音無サノトの空想録

ニートだけど漫画家を目指そうかと思う

【ゲーム制作】Unity 公式チュートリアルの玉転がしゲームを改良② 障害物にアニメーションをつける

どうも音無サノトです(^^)/

前回のゲーム制作では Blender で作成したオブジェクトを Unity に入れるところまでやりました。

今回はそのオブジェクトにアニメーションをつけて自動で動くようにしたいと思います。

 

otonasisanoto.hatenablog.com

 

それでは早速、始めましょう!

 

オブジェクトにアニメーションをつける

まず Assets の中に「Animations」というフォルダを作成します。

f:id:otonasisanoto:20190526082226p:plain

「Animaions」フォルダの作成

 

Animaions フォルダ内に Project の Create から Animaion を選択し Animation を追加します。

f:id:otonasisanoto:20190526082427p:plain

Animaion の追加

 

Animation の名前を「EnemyAnimation」に変更します。

f:id:otonasisanoto:20190526082512p:plain

Animation の名前の変更

 

EnemyAnimation を Hierarchy に置いた enemy にドラッグ&ドロップでアタッチします。

f:id:otonasisanoto:20190526082627p:plain

Animation を enemy のコンポーネントに追加

 

ここからアタッチしたアニメーションを変更していきます。

まず Scene ビューのタブのところで右クリックをし Add Tab > animation を選択します。

f:id:otonasisanoto:20190526082747p:plain

Animation タブの表示

 

すると下のようなウィンドウが開くと思います。

f:id:otonasisanoto:20190526083300p:plain

Animation タブ

 

このウィンドウで時間ごとにオブジェクトをどう変形させるかを設定することができます。横軸が時間軸(タイムライン)で縦軸がそれぞれのプロパティ(ポジションとかスケールとか)となります。

 

早速、アニメーションをつけていきたいのですが、その前にまず障害物となる enemy の初期位置を変更しましょう。

(今更ですけど障害物なら名前を enemy じゃなくて obstacle とかにすればよかったです。。。名前付けはセンスが出ます)

f:id:otonasisanoto:20190526083602p:plain

障害物の初期位置を調整

 

上の様に変更すると障害物が右上に設置されます。

ここから4隅を移動するようにアニメーションをつけていきます。

f:id:otonasisanoto:20190526083901p:plain

障害物の移動イメージ

 

Animation ウィンドウに戻って Add property から Transform > Position を選択します。

f:id:otonasisanoto:20190526083740p:plain

Animation タブより Position の追加

 

すると下の図の左側に Position の値が追加されます。

右の時間のところでキーフレームをつけて、この Position の値を変更することで、どのタイミングでどの場所にオブジェクトを移動させるかを決めることができます。

試しに0.05の位置で右クリックをして Add Key を選択します。

f:id:otonasisanoto:20190526084319p:plain

0.05 の位置にキーフレームを追加

 

すると、0.05の位置にキーフレームが追加されました。

f:id:otonasisanoto:20190526084533p:plain

キーフレームが追加される

 

0.05の位置にある Position のX軸を-5に変更します。

f:id:otonasisanoto:20190526085707p:plain

Position の変更

 

Animation ウィンドウの再生ボタンを押すとオブジェクトが動くのを確認できます。

f:id:otonasisanoto:20190526093054g:plain

 

ちょっとこれでは速い気がしますね。。。

アニメーションの位置はドラッグ&ドロップで動かせますので調整を行います。

色々と試した結果1.30ぐらいがちょうどいいかなと思ったので移動させます。

f:id:otonasisanoto:20190526095437p:plain

フレームレートを調整

 

再生してみると下の様な動きになります。

f:id:otonasisanoto:20190526095238g:plain

 

いい感じです。

同じ要領で1.30置きに Position を変更して、4隅を移動してくるくると回るように変更します。

それぞれのキーフレームの位置と Position は下の様になります。

Animation ウィンドウのタイムラインのところで Ctrl を押しながらホイールすると横軸の時間の間隔を変えられて編集しやすいです。

f:id:otonasisanoto:20190526100232p:plain

キーフレームとポジション

 

アニメーションを設定した後、再生すると下の様に動くと思います。

f:id:otonasisanoto:20190526100701g:plain

 

最後に EnemyAnimation の Loop Time にチェックを入れて、このアニメーションがループするようにします。

f:id:otonasisanoto:20190526104240p:plain

EnemyAnimation をループさせる


そうすることでゲームを再生すると4隅を回る動きがループするようになります。


これでオブジェクトにアニメーションをつけて自動で動かせることができました。

次回はこの障害物に当たったときの衝突判定などを追加していこうと思います。

 

本日は以上となります。最後まで読んでいただきありがとうございました!