Unityとか備忘録サークル獏の佐藤敏がUnityとかで知ったTipsを書いておく備忘録です。2019-12-03Unity(のHumanoid)でクソみたいなAnimationControllerをできるだけ使わずにやるUnityで3DキャラをアニメさせるとなるとまずはAnimationControllerのノードをいじってヒーコラってことになるんでしょうが、端的に言ってクソです。UIデザイナーさんがUIをアニメーションさせるくらいならいいとして、3Dアニメーションでノードの線をアレコレ伸ばしてまともに使う気になれません。APIを使っていきましょう。ぜんぶ自力でもいけるんでしょうけど、今や便利なライブラリがあるのでそれを使わせていただきます。Pack君に登場してもらいます。キャラとしてもデキが良くてHumanoid形式のanimもたくさん入っているいいアセットです。アセットストアからダウンロードしてインポート。(VRoidとかを使うとしても基本は変わりません。Playerをダウンロードします。Zip」でzipをダウンロード。github.com解凍して、Unityのプロジェクトフォルダに放り込みましょう。MotionPlayerについては別のフォルダを作ったほうが良かったかもしれないですな。Mecanim」フォルダからとりあえず「m01_jersey_00_l」を選び、Scene画面にドラッグ&ドロップして、ひとまずPositionとかは全部0にします。View」についてはこんな数字にしましょうか。View」は結構キャラの印象が変わるので注意しましょう。キャラがでかすぎる・小さすぎるというときも、カメラ自体を動かすか、FoVを変えるかでだいぶ見た目は変わります。Contollerはイヤですが、多分これを設定しないと色々不便です。形式だけ、設定しましょう。「MyAssets」→「controller」というフォルダを作りました。Controller」を選びましょう。「taichi_controller」という名前にしました。Controllerを設定してあげます。「Animator」タブを選んで、Taichiくんのアセットから「m01@back_20」の左の矢印をクリック、出てきた「back_20」を......Animatorタブにドラッグ&ドロップするとこうなりますんで、Unityのプレイボタンを押すと無限にバックするTaichi君が誕生。Controllerを色々細かくいじっていくのが普通???のやり方ですね。準備は続く......先ほどと同じように、今度は「m01@idle_00」の左の矢印をクリック、「idle_00」をクリックして......Ctrlキーを押しながらDキーを押します。「複製」という意味です。するとanimファイルだけ抜き出せます。同じことを繰り返して、他に「idle_20」「jump_10」「kick_20」というanimファイルを抜き出しました。「Resources」「anim」という名前のフォルダを作って、4つのanimファイルを移動させます。ここで「Resources」はスペルミスすると動かないので慎重に。Playerをつけてあげます。Player」が出てくるはず。Playerを入れるどっかでミスっていると思います......こんな感じになったかと思います。mymaskなど適当な名前をつけて保存。この「mymask」をプロジェクトからクリックして「Humanoid」を開くと最初は全部が緑になっていますが、腕・手先だけ緑で残し、他はクリックして赤にしてしまいましょう。Mask」にさっき作ったmymaskを指定しておきましょう。mymaskが設定できました。Empty」でカラのオブジェクトを作り、名前を「GameObject」から「GameManager」に。Add」を押すと、ビミョーにタイムラグがあって、こんな風にGameManagerコンポーネントが付けられます。Scriptで中身を書いてあげましょう。}}こんな感じでいいと思います。実行してみると?Taichi君が1秒ごとに4つのモーションをランダムに動かします。Controllerに手動で登録することはしていません。形式的に登録した「back_20」を削除してもちゃんと動きます(実行直後だけおかしくなりますが)。書き換えれば1秒ごとではなくスペースキーを押すたびにモーションが切り替わります。