【UnityC#講座】3D人型モデルの動かし方をユニティちゃんで学ぶ【Animator】


Unity2018.1.5f1
Windows10

■■追記■■

他にもこのようなユニティちゃんを操作する記事があります。

【UnityC#講座】3D人型モデルを三人称視点で動かす【ユニティちゃん】

【UnityC#講座】ユニティちゃんをマウスカーソルの方向に移動させる

■■追記ここまで■■

Person Control/トップ

今回は人型モデルを動かしてみましょう。
Person Control」プロジェクトを作ってください。

■Unity-chan!をダウンロードする

今回使用するのはUnity日本支社のアイドル「ユニティちゃん」です。
無料でダウンロードでき、ルールを守れば二次創作もOKとのこと。

ユニティちゃんライセンス

この作品はユニティちゃんライセンス条項の元に提供されています

ではこちらからユニティちゃんをダウンロードしましょう。

Person Control/UnityちゃんImport

全てImportしてください。
そうしたらProjectのAssetsからunitychanを選びSceneにドラッグ&ドロップしましょう。

UnityChan > Models > unitychan

Person Control/UnityちゃんScene

次にユニティちゃんを乗せるPlanを出します。

Hierarchy > Create > 3D Object > Plan

ユニティちゃんアセットには地面を装飾するMaterialも入っているのでそれも使ってみましょう。

UnityChan > Stage > Materials

その中のどれでも好きなものをSceneかHierarchyのPlaneにドラッグ&ドロップしてください。

Person Control/UnityちゃんPlane

ユニティちゃんとPlaneの位置はどちらも(0, 0, 0)にしてください。

■Animatorの設定をする

ユニティちゃんアセットには走る、跳ぶなどの様々なAnimationが入っています。
それをUnityちゃんの動きに合わせて現れるようにするのがAnimatorです。

Project > Create > Animator Controller

このようにたどってAnimator Controllerをクリックしてください。
名前は「UnityChanAction」にしました。

Person Control/Animator

Animatorの何もない罫線のところで右クリックします。

Person Control/Animator、Create State、Empty

するとCreate Stateが出るのでその中のEmptyをクリックしてください。
そこで出てきたNew Stateという四角をInspectorで名前をIdleにしてください。
同じようにもう2つ作って名前をRunJumpにします。

Person Control/Animator、Idle、Run

次にそれら3つを順にクリックしてInspectorからMotionを設定してください。

Person Control/Animator、Motion

Idle / WAIT00
Run / RUN00_F
Jump / JUMP00

私はこうしましたが別のものでも構いません。
次は各々のAnimationから別のAnimationへつながるように設定します。
まずはIdleを右クリックし、Make Transitionを選んでRunに向けて矢印を引きます。

Person Control/Animator、Make Transition Person Control/Animator、矢印

スポンサーリンク


右上のParametersの右下のプラスボタンをクリック。

Person Control/Animator、Parameters

Boolを選んで名前はRunningにしましょう。

Person Control/Animator、Parameters、Running

矢印のInspectorを選び、Has Exit Timeのチェックをはずし、下のConditionsの+をクリックしたら下記の画像のようにRunningTrueにセットします。

Person Control/Animator、Has Exit Time,Conditions

次はRunからIdleへ先ほどとは逆向きの矢印を作って、RunningFalseにします。
こちらもHas Exit Timeをはずしてください。

Person Control/Animator、矢印、Idle、Run

Jumpも同じ要領で矢印を出します。
こちらはIdleRunのどちらからも矢印を両方向につけます。
ParametersはこちらもBoolで名前はJumpingです。
Idle、Runからの矢印はJumpingTrue
Jumpからの矢印はどちらもFalseにします。
ここでも全ての矢印のHas Exit Timeのチェックをはずしてください。

Person Control/Animator、矢印、Idle、Run、Jump

そしてHierarchyのユニティちゃんにUnityChanActionをセットします。

Inspector > Animator > Controller

Person Control/Animator、Controller

さて次は動かすスクリプトを書きましょう。
その前に忘れずにSave Sceneしておいてください。

■Unity-chan!を操作する

まずUnityちゃんのInspectorにRigidbodyを入れてください。
今回の移動方法はVelocityAddForceを使うので必要です。
そしてConstraintsFreeze RotationX軸Y軸Z軸の3つにチェックを入れると前後左右へ回転、この場合では転倒を防ぐことができます。
Y軸は向きを変えるためにチェックしません。

ユニティちゃん操作/Rigidbody

次に同じようにCapsule Colliderを入れてください。
Colliderは色んな形のものがありますが人型モデルはこれが主流で、それを入れるとPlaneに乗るようになります。
位置や大きさがおかしいのでこのように調整してください。

Person Control/Capsul Collider

Person Control/Capsul Collider、Unityちゃんにセット、調整

 

そしてAnimatorのApply Root Motionのチェックを外します。
これはアニメーションで移動させるかスクリプトで移動させるか決めるもので今回はスクリプトによるものです。

Person Control/Animator,Apply Root Motion

さて、スクリプトに入りましょう。
名前をPlayerとしたC#のファイルを作ってください。

Playerをユニティちゃんにドラック&ドロップして再生すると、WASDか↑↓←→のキーで移動、スペースキーでジャンプします。

ユニティちゃん/操作

はい、ちゃんと静止状態、走る、跳ぶのアニメーションが行われるようになりました。

今回は8方向への移動とジャンプするだけのシンプルなものです。
もっと効率的な方法があるのでしょうが私の技術力ではこれが精一杯でした(汗)
もっとスマートな方法はたくさんあるでしょうが今回はこれで・・・

■まとめ

今回はオブジェクトのアニメーションを管理するAnimatorの使い方を学びました。
これを元に攻撃や敵にやられた時など色んなアニメーションをさせることができるようになります。
Unityちゃんのアセットにはまだまだたくさんアニメーションがあるので試してみてください。

さらに今回はRigidbodyを使った移動方法ですが、それを使わないCharacter Controllerという方法もあります。
物理的特性を利用しない時に良いのだそうです。

Unityマニュアル Character Controller

Unityスクリプトリファレンス CharacterController

□□□

この記事の続きです。

【Unity講座】ユニティちゃんにキソラちゃんがついてくるようにする【NavMeshAgent、Blend Tree】

■関連記事

【UnityC#講座】ユニティちゃんでもっとAnimator Controllerを上手く使いたい

【UnityC#講座】ユニティちゃんの表情を替える【SetLayerWeight】

【UnityC#講座】AnimatorControllerを使いまわす【AnimatorOverrideController】

【UnityC#講座】AnimatorControllerの使い方

【UnityC#講座】ユニティちゃんたちをドラクエっぽく一列に移動や順番変更させる【List、for文、NavMeshAgent】

スポンサーリンク

目次に戻る


16 Replies to “【UnityC#講座】3D人型モデルの動かし方をユニティちゃんで学ぶ【Animator】”

  1. 初心者です。
    矢印キー、スペースキーを押してもUnityちゃんが反応しません。
    ソースは失礼ながらこちらのサイトのものをコピーペーストさせて頂きました。対処法はありますか?
    バージョンは2017.3.1f1です。

  2. 私は2017.3.1f1のバージョンは使ったことがないのではっきりした原因は分かりませんが、思い当たるのはここら辺でしょうか。

    ・変数の名称がどこかで間違っていないか
    ・Rigidbodyの設定
    ・Capsule Colliderの設定
    ・別のAnimatorをセットしていないか
    ・AnimatorのApply Root Motionのチェックを外しているか

    これをチェックして問題がなければ申し訳ないですが私の手に負えません。

  3. ピンバック: Unity 1時間目 | futu-no
  4. はじめまして。
    このページで紹介されてる内容を参考に、やってみたのですが、
    スクリプトをかいて ヒエラルキーの中のモデルにドラッグして、再生ボタンを押すと、

    キャラが地面を突き抜けて自然に落ちていってしまうのですが
    何か床をつくったりしないといけないのでしょうか・・・?

    (使ったモデルは大きいユニティちゃんではなく SDのものです)

    1. すみません、冒頭にplaneとあるのが床ですね!見落としていました、このコメントは削除で大丈夫です
      お手数をおかけしました…!

      おかげさまで左右には動くようになりました
      何故か足が微動だにせずスーッと移動していく問題は残ってるのですが
      見直しながら再度設定してみます。

      この度は記事の執筆ありがとうございます。

  5. はじめましてこんにちわ。
    このサイトのスクリプトをコピペさせて頂いてunityちゃんを動かそうと思ったのですが、その場で歩いたりジャンプするだけになってしまい実際には移動が出来ませんでした。unityは初心者で知らぬ間にどっかの設定をいじったりまだやっていないこともあることかもしれないです。
    どなたかこの問題を解決できるようでしたら返信お願いします。

    1. どうも、管理人のIshidaGamesです。
      コメントありがとうございます。
      先ほど私はこの記事を再現してみたのですが普通に動きました。
      なのでまずはユニティちゃんのRigidbody、Animator、Capsule Colliderの設定がちゃんとされているか確認してみてください。
      それでダメだったらまたコメントお願いします。

  6. can’t add script behaviour visualcontainer asset. the script needs to derive from monobehaviour

    スクリプトを追加しようとするとこのようなエラーが出るので最初のpublic class Controllerに変更するとエラーが出なくなりましたが、直線移動しかしません…
    アニメーションが全く適応されてないようにも見えるのですが原因がわかりません

    1. 混乱させて申し訳ありません。
      スクリプトの名称がControllerになっていましたがPlayerが正しいのですぐに修正します。
      C#スクリプトの名前とクラス名は同じでないといけないのですが、どちらもControllerで問題ないならばそのままで良いです。
      アニメーションの問題で思いつくのは
      ・Animator Controllerがアタッチされているか
      ・SetBoolの名称が間違っていないか
      ・アニメーションがセットされているのか
      ぐらいでしょうか。
      そこが問題なければまたコメントください。

  7. はじめまして。
    youtubeのチャンネル人工知能にある動画のように、ゲームではなく動画として残すにはどうすればいいのでしょうか?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください