【UnityC#講座】ユニティちゃんをスカイリム風に操作する

Unity2018.1.5f1
Windows10

以前ユニティちゃんを操作できるようにしました。

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

今回はその時とは別の操作方法にします。

名作オープンワールドRPG「スカイリム」のようにマウスで方向を変えてそれを基準に前後左右、ジャンプ、そして攻撃と高速移動を設置します。
さあ、まずはプロジェクト「SkyrimController」を作ってください。

■ユニティちゃんをセットする

以前と重複になりますがまずはユニティちゃんをアセットストアからダウンロードします。

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

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

ProjectからunitychanをHierarchyかSceneにドラッグ&ドロップしてください。

UnityChan > Models > unitychan

次にユニティちゃんが乗る地面ですが、以前はPlanですが今回はTerrainを使います。

Hierarchy > 3D Object > Terrain

ユニティちゃんがTerrainにちゃんと乗るようにしておいてください。
あとタグの設定もしておきましょう。

SkyrimController/Terrainのタグ

SkyrimController/Add Tag

Inspector > Tag > Add Tag > Tags & Layer > Tags > +

SkyrimController/タグ設定

を押して出てきた欄にGroundを追加します。
ついでに後で使うEnemyも作っておきましょう。

SkyrimController/Terrainにタグ設定

最後にTerrainにGroundのTagを設定して出来上がりです。

次にユニティちゃんにCapsule ColliderとRigidbodyを追加します。
Hierarchyのunitychanにクリックし、そのInspectorからAdd Componentをクリック、Capsule ColliderとRigidbodyを検索してください。

Capsule Colliderはこのようにしましたが厳密にこの通りにする必要はありません。

SkyrimController/CapsuleCollider SkyrimController/CapsuleColliderとユニティちゃん

RigidbodyはConstraintsのFreeze Rotationのチェックボックスをすべてチェックしてください。
これで不要な回転をしなくなります。

SkyrimController/Rigidbody/ConstraintsのFreeze Rotation

■Animatorの設定をする

これも以前したことで説明は重複になるのでざっと説明します。
詳しい説明が見たい人はこの記事を見てください。

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

SkyrimController/Animator Controller/ステートマシン

1.Animator Controllerを開く。

Project > Create > Animator Controller

名前は「SkyrimAnime」にしました。
ウィンドウが小さくて扱いづらい時はAnimatorのタブをウィンドウの外に持ち出すと別画面として使えます。
マウスのホイールでズームを操れます。
ウィンドウの中身を動かしたいときはホイールをクリックしたまま動かします。

2.罫線上で右クリックし、

Create State > Empty

とすると長方形のもの、ステートマシンが出てきます。
9つ出してInspectorから以下の通りに名前をつけてください。

Idle
Front
Back
Right
Left
Jump
Sprint
Attack

そしてそれぞれにInspectorのMotionにアニメーションを以下の通りに入れます。

Idle → WAIT00
Front → RUN00_F
Back → WALK00_B
Right → WALK00_R
Left → WALK00_L
Jump → JUMP00
Sprint → POSE29
Attack → POSE26

SkyrimController/Animator Controller/Transition追加

3.Idleを中心にそれぞれのステートマシンを矢印、Transitionでつなぐ。

各ステートマシンを右クリック、Make Transitionをクリックしてつなぎたいステートマシンをクリックします。
もし間違えてつないでしまった場合、TransitionのInspectorのTransitionsの「-」をクリックすると消すことができます。

SkyrimController/Animator Controller/Parametersを設定

4.Parametersを設定する。

Animatorウィンドウの左上にParametersがあるのでクリック、次にBoolをクリックし名前を入れます。
名前は分かりやすくステートマシンと同じで良いでしょう。
Idle以外の7つのParametersを全てBoolで設定してください。

SkyrimController/Animator Controller/TransitionにParametersを設定

5.TransitionにParametersを設定していく。

矢印をクリックし、InspectorのConditionsの+マークをクリックしてください。
そこで先ほど設定したParametersを設定していきます。
Idleつながっている先のステートマシンと同じ名前のParametersを設定します。
そしてTrueとFalseは以下のようにしてください。

Idle → 各ステートマシン True
各ステートマシン → Idle False

SkyrimController/Animator Controller/InspectorのHas Exit Time

あとInspectorのHas Exit Timeのチェックボックスを全て外します。

SkyrimController/Animator/Apply Root Motion

さて、できたAnimator Controllerをユニティちゃんにあてましょう。
Hierarchyのユニティちゃんをクリックし、そのInspectorのAnimatorのControllerの欄に入れます。
そしてApply Root Motionのチェックを外してください。

■スクリプトを作る

Project > Create > C# Script

これで作ったファイルを作り、名前は「SkyrimController」にします。

スポンサーリンク

W 前進
S 後進
D 右移動
A 左移動
スペース ジャンプ
Z 旋風の疾走
マウス左クリック 攻撃

できたらそれをHierarchyのunitychanにドラッグ&ドロップしてください。
ここで一旦動かしてみたいところでしょうが、まだ準備ができていません。
次はInspectorからSkyrimControllerの設定をします。

■カメラと効果音をセットする

SkyrimController/Inspector/空

これはHierarchyのunitychanのInspectorのSkyrimControllerです。
Camera、AudioClip、LegLeft、LegRight、AttackObjを上から順に設定していきます。

1.Camera

まずはHierarchyの最初からあるMain Cameraをunitychanにドラッグ&ドロップしてください。
画像のようになればOKです。

SkyrimController/Main Cameraをユニティちゃんの子に

次にまたMain Cameraを今度はSkyrimControllerにドラッグ&ドロップします。
まずunitychanをクリックし、InspectorのCameraの欄に向けてドラッグ&ドロップします。

2.AudioClip

こちらはまずInspectorのSkyrimControllerのAudioClipの文字の頭についている三角をクリックします。
するとSizeという欄に数字を入れられるので「2」と入力してインターを押してください。

SkyrimController/AudioClipの配列

そうすると2つそこに音のファイルを入れられるようになります。
次は効果音を調達しましょう。

音人 戦闘系音

こちらのサイトは個人の利用なら連絡なしで利用して良いそうなのでありがたく使わせていただきましょう。
好きな音を選んで良いのですが私はこちらにしました。

手足・殴る、蹴る12
回転03

前者は攻撃用で後者が旋風の疾走用です。
さて、SkyrimControllerに回転03だけをドラッグ&ドロップしてください。
手足・殴る、蹴る12は別に使います。

3.LegLeft、LegRight

次は足音を出すようにするのですがそれには無料アセットの「Free Footsteps System」を使うので以下のバナーからダウンロードしてください。

これはTerrain上で地面のテクスチャによって足音を替えてくれるという優れものです。

・footstep_triggerとfootsteps_databaseを設置。
・unitychanにAudioSourceとCharacterFootstepsを設置。
・設置したCharacterFootstepsのAudio Sourceの欄にHierarchyのunitychanをドラッグ&ドロップ。

このような流れになります。

Project > Assets > FREE Footsteps System > Resources

ここに入っているfootstep_triggerとfootsteps_databaseを使います。
まずfootstep_triggerですがこれはユニティちゃんの両方の足にひとつずつつける必要があります。

SkyrimController/ユニティちゃんの足の子にfootstep_trigger

このようにunitychanの中にあるCharacter1_LeftToeBaseとCharacter1_RightToeBaseに1つずつドラッグ&ドロップします。

SkyrimController/ユニティちゃんの足にfootstep_trigger

次に足から地面につくように位置を調整してください。

SkyrimController/Transformのマウス操作

このようにTransformのXやY、Zに矢印を置くとマウスでのドラッグで微調整できます。
しかし位置はXYZすべて0でも良いかもしれません。
調整は後からでもできます。

そしてfootstep_triggerをSkyrimControllerにドラッグ&ドロップします。
左右を設定していますが逆に入れても問題はありません。

次にHierarchyにfootsteps_databaseを置いてください。

その次に、

Assets > FREE Footsteps System > scripts

にあるCharacterFootstepsをunitychanにドラッグ&ドロップ

そしてまた次にunitychanのInspectorから

AddComponent > Audio Source

それから最後に Character FootstepsのAudio Sourceの欄にunitychanをドラッグ&ドロップして終わりです。

unitychan > Inspector > Character Footsteps > Audio Source

SkyrimController/ユニティちゃんのCharacter Footsteps

お疲れ様でした。

しかし、Terrainではテクスチャが張られていないと音が出ないようなのでそれもつけてみましょう。

Terrain > Edit Textures > Add Texture

SkyrimController/Terrainにテクスチャ

4.AttackObj

最後はとりあえず空のオブジェクトを作りAttackObjの欄に入れておくだけで良いです。

Hierarchy > Create > Create Empty

名前は同じ「AttackObj」にします。
HierarchyのGameObjectを右クリック、Renameで変えられます。

SkyrimController/Inspector/満杯

さて最低限の準備は完了したので動かしてみてください。
ちゃんと音は出ているでしょうか?
攻撃の音は敵に攻撃が当たった時に出るのでまだ聞けません。

W 前進
S 後進
D 右移動
A 左移動
スペース ジャンプ
Z 旋風の疾走
マウス左クリック 攻撃

■攻撃された敵が吹っ飛ぶようにする

SkyrimController/AttackObj/CapsuleCollider/IsTigger

まずはAttackObjにCapsuleColliderをAddComponentからセットし、IsTriggerにチェックを入れます。

SkyrimController/AttackObjをユニティちゃんの足に

次はまた以前のfootstep_triggerと同じように足につけるのですが、今回は右足だけです。
大きさは変えなくても問題ありません。
後から好きに変えてください。
位置はCharacter1_RightToeBaseの子にしたらTransformのXYZがすべて0で大丈夫です。

次はスクリプト「AttackRange」を作ります。

できたらAttackObjにドラッグ&ドロップ

SkyrimController/AttackObj/効果音入れる

そして前にダウンロードしておいた音声ファイルの手足・殴る、蹴る12を空欄に入れ、そしてAddComponentでAudioSourceを入れます。
次にAudioSourceのPlayOnAwakeのチェックを外してください。
入れたままにすると必要ないところでも鳴ってしまいます。

AddComponentで入れるものまとめ。
・CapsuleCollider、IsTriggerにチェック
・Rigidbody
・AudioSource、PlayOnAwakeのチェックを外す

次は蹴り飛ばす敵を用意します。
敵と言ってもただのCubeですが。

Hierarchy > Create > 3D Object > Cube

まずTagを前に作っておいたEnemyにします。
そしてAddComponentでRigidbodyを加えて出来上がり!
上手く音が出て敵は吹っ飛んでくれたでしょうか?

SkyrimController/ユニティちゃんがオブジェクトを蹴り飛ばす

これで今回は終わりです。
お疲れさまでした。

■関連記事

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

【UnityC#講座】ユニティちゃんでもっとスカイリム風に操作したい 前編【カメラ】

【UnityC#講座】ユニティちゃんでもっとスカイリム風に操作したい 後編【Animator Controller】

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

【UnityC#講座】AnimatorControllerの使い方

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

【UnityC#講座】上下キーで前進後退、左右キーで方向替える移動法【ユニティちゃん】

スポンサーリンク

目次に戻る