Unityでゲーム、アプリ開発

Unityで初めてゲームやアプリを作る人のための支援ブログです。

Unity 簡単に敵キャラが追いかけてくるようにする方法 Unity学習21

みなさん!今日も不元気そうですね!笑笑
僕なんか今にも死にそうですよ!笑笑
って事でゆうきやんです。

と言うか本当に何回も死にかけてます。
国道一号線を原付で走ってガードレール突っ込んだり、
雨の中左折しようとして滑って転んだり。

普通に左折しようとしてラジバンダリ。
そろそろ先に逝かせてもらいますね!笑笑

と言う事で本題に入っていきましょう!


簡単に敵キャラが追いかけてくるようにする方法

今回はナビゲーション機能を使って簡単なアニメーション設定で
追いかけてくる方法を記述していきたいと思います。
できれば手間なく楽にやりたいですよね!

まずプロジェクトを3Dで開いてください。


f:id:Phoenix9056:20200331093953j:plain

エディタ画面上部のWindow⇨Asset Storeから
Zombieと検索してダウンロード、インストールしてください。
今回はゾンビを敵キャラに使います。
※アセットストアの使い方が分からない方は下記記事を参考にしてください。
www.unityprogram.info


f:id:Phoenix9056:20200331094800j:plain

Hierarchy内のから3D Object⇨③のPlaneを作成してください。
PlaneInspector内にあるScaleの値を全てにして少し大きくしておきましょう。

次に②のメインキャラクターを自分で用意するか、
同じようにユニティちゃんを追加してください。
※ユニティちゃんの追加方法は下記記事を参考にしてください。
www.unityprogram.info

④のMain CameraGameObjectCinema chineと言うアセットを
使ってキャラクターを追従するように設定してあります。
※Cinema chineの設定方法は、下記記事を参考にしてください。
www.unityprogram.info

f:id:Phoenix9056:20200331100736j:plain

今回は敵キャラが追いかけてくるとのことで
広めに設定したので参考までに。

次に⑤の先程インポートしたZombie▶︎をクリックして、
⑥のprefabをクリック。
⑦のZombie1をドラッグしてScene内にドロップしてください。


f:id:Phoenix9056:20200331102812j:plain

①のHierarchy内にあるplaneをクリックして
Inspector内にある②のStaticにチェックを入れてください。
簡単に言うと、Staticにチェックを入れる事でナビゲーションが使えるようになります。


f:id:Phoenix9056:20200331102223j:plain

次に、①のWindow⇨AI⇨Navigationをクリックしてください。
次にInspector内にある②のBakeをクリックして
最後に③のBakeをクリックしてナビゲーションが効く範囲を反映してください。

f:id:Phoenix9056:20200331105034j:plain

Hierarchy内にあるZombie1をクリックして、
Inspector内の一番下にある①のAdd Componentから
②のBox Colliderを追加して同じ数値にしてください。
同じ手順でNav Mash Agentを追加してSpeedを1にしてください。

下にあるスクリプトですが
Project内の自分が分かりやすいところで、
右クリック⇨Create⇨C# Scriptを選択してください。
名前は、ZombieMoveです。

次のコードをコピペするか同じ内容で記述してください。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//unityEngine.Ai名前空間をインポートします。
using UnityEngine.AI;

public class ZombieMove : MonoBehaviour
{
    //GameObject型を変数targetで宣言します。
    public GameObject target;
    //NavMeshAgent型を変数agentで宣言します。
    NavMeshAgent agent;

    
    void Start()
    {
        //GetComponentでNavMeshAgentを取得して
        //変数agentで宣言します。
        agent = GetComponent<NavMeshAgent>();
        
    }

    
    void Update()
    {
        //Nav Mesh Agentが設定されたObjectがtargetに
        //指定されたGameObjectの後を追いかけます。
        agent.destination = target.transform.position;
        
    }
}


作ったスクリプトZombie1にドラッグ&ドロップして
アタッチしてください。

Inspector内の追加されたスクリプトTargetHierarchy内にある
Unityちゃんをドラッグ&ドロップしてください。

これで、ゾンビがUnityちゃんを追いかけるようになります。

次にゾンビが歩くアニメーションを設定していきます。


f:id:Phoenix9056:20200331193502j:plain

Project内の自分が分かりやすいところで
右クリック⇨①Create⇨②Animator Controllerをクリックして作成して、
名前をMoveとします。
ダブルクリックしてAnimatorを開いてください。

③の所で右クリック⇨Create State⇨Emptyをクリックして、
③を作って名前をInspectorより変更してWalkとします。


f:id:Phoenix9056:20200331212806j:plain

次にどのような動き(アニメーション)をするのか設定していきます。

①をタップ...じゃないや、クリックしてIncpector内にある②のMotion
◉をクリックしてください。
そうするとSelect Motionが開かれるので、③のZ_Walkを選択して
エンターを押してください。

Walkと書いてあれば大体歩くアニメーションなので他のもので
試してみるのもいいかもしれません。


f:id:Phoenix9056:20200331214329j:plain

Animatorから①のSceneをクリックしてScene画面に戻します。
ここに関しては気持ちの持ちようなのですが笑笑

次に先程作成したAnimatorControllerの②のMove
Hierarchy内にあるZombie1をクリックして、Inspector内にある
Animatorの③のControllerにドラッグ&ドロップしてください。

もしも④のApply Root Motionにチェックが入っていたらクリックして外してください。

Apply Root MotionApply Root Motionとは、座標移動をする
アニメーションがあった場合そのままアニメーションと一緒に動くようにします。
スクリプトで座標移動を設定しなくてもその移動される
アニメーションを使いたかったらApply Root Motionを使用します。

今回の場合はナビゲーションで移動するので、アニメーションは移動しなずその場で動く
ようにチェックを外してあります。

これで完成です!再生してみましょう!

f:id:Phoenix9056:20200331221038g:plain

ゾンビが追いかけてきますね!!
あ、ゾンビはプレハブ化しなおして
大量生産して、スクリプトのTargetにUnityちゃんを設定しました笑笑
※プレハブ化の詳細は下記記事を参考にしてください。
www.unityprogram.info

あなたなら出来る!!僕には無理ですけど笑笑

ご視聴ありがとうございました。

※このままUnity学習される方は下記カテゴリを参考にしてください。
phoenix9056.hatenablog.com

※3Dゲーム作り編は下記カテゴリより。
www.unityprogram.info

※初心者編は、下記カテゴリから。
phoenix9056.hatenablog.com

※オススメアセットの紹介は下記カテゴリを参照してください。
phoenix9056.hatenablog.com