さくらの作業ログ

今度は三日坊主にしないといいな

Blenderで作ったアニメーションをUnityで再生する

Blenderでアニメーションを作成する

アニメーションの作り方に関してはブログとか動画とかいくらでもあるんでそっちを参照してください。
今回は関節も何もない生き物(?)を作ったので本当に話すことが何もありません。すべてノリと勘です

作成したものをアクションシート(上図)の「ストリップ化」で保存します。ストリップって何?

NLAエディター」や「ビデオシーケンサー」でアニメーションを扱う単位の1つ。オフセットにより、本来の開始や終了範囲からずらして再生を始めたり、分割やカットによるストリップ自体の加工、他のストリップとのブレンドが可能。

引用元: 窓の森 forest.watch.impress.co.jp

なるほどなにもわからん
とりあえずこれをやらないとソフト閉じたときに作ったアニメーションが消えるらしい。
Unity側でアニメータ設定するときにもここの名称を使うので、わかりやすい名前を付けておいてください。

作ったモデルをUnityに読み込む

ファイル→エクスポート→fbxからfbxファイルをエクスポートします。

「アニメーションをベイク」にチェックを入れてください。
あと個人的なおすすめは内容の中の「可視オブジェクト」にチェックを入れることです。没パーツを消し忘れていると想定とだいぶ違うものが出てくることがあるので(没パーツをちゃんと消せ)

吐いたfbxファイルをUnityに投げ込みます。ドラッグ&ドロップでOKです。

そうするとなんかいい感じにアニメーションのファイルとかも入ってきます。ファイル?設定?
ループアニメーションとかはUnity側でも設定をしないとループにならないので、インスペクタの下の方にある設定をわちゃわちゃします。

アニメーター設定

プロジェクトパネルで右クリック→作成→アニメータコントローラを作成します。
正しいのかよくわかりませんが、現状こうしています。

被ダメモーションを再生するために、Damagedというフラグを作っています。
これがtrueのときにダメージモーションが再生されます。

コードはこう

public async UniTask Damaged(){
    anim.SetBool("Damaged", true);
    await UniTask.DelayFrame(25);
    anim.SetBool("Damaged", false);
}

ダメージモーションが25フレームなので、Damagedをtrueにしたあと25フレーム待ってfalseに戻す形式です。
ループアニメーションにしてないので繰り返し再生されることはない気がするけど、ここでfalseにしておかないと次の被ダメでおかしくなる。たぶん。

で結果がこう

攻撃モーションが再生されている気がする。

アニメーションの同時再生はできない

BlenderNLAみたいにホバリング(羽ばたき)モーションと被ダメモーションとかを同時に再生できないかな~と思ったものの、できないっぽい。
アニメーション修正ですね~

宣伝

ニコニコに動画も上げてるからよろしくね~