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

Person Control/トップ

Unity2018.1.5f1
Windows10

■■追記(18年11月15日)■■

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

こちらの記事の方が完成度が高いのでご覧ください。


■■追記ここまで■■

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】

スポンサーリンク

目次に戻る