おーみんだよ。

おーみんだよ。

プログラミング(主にUnity)や気になるニュースについて。

【Unity】追いかけてくる敵の作り方。

f:id:bookreadkun:20190201063726p:plain

 

おはようございます。おーみん(@Ooooooomin_365)です。

 

 

今回の記事では追いかけてくる敵の作り方について書いていこうと思います。

 

以下のサイト様を参考にさせていただきました。本当にありがとうございます。

https://codegenius.org/open/courses/24/sections/116

追いかけてくる敵の作り方

 

まずオブジェクトを2つ用意。

「追いかけてくる敵」と「追いかける対象になるオブジェクト」です。

(僕の場合は前者をOliver、後者をMaxとしています。)

f:id:bookreadkun:20190201070604p:plain

 

次に、「追いかけてくる敵」のインスペクタビューにてAdd Componentをクリック→Nav MeshAgentを検索して選択。

 

次に追いかけてくる敵のスクリプトを作ります。

スクリプトは以下。

 

---------

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using UnityEngine.AI;

 

public class Chase: MonoBehaviour {

     public GameObject target;

     private NavMeshAgent agent;

 

     void Start(){

          agent = GetComponent<NavMeshAgent>();

     }

 

     void Update(){

          agent.destination = target.transform.position;

     }

}

---------

 

このスクリプトを「追いかけてくる敵」にドラッグ&ドロップ。

 

するとインスペクタービューにてtarget欄にオブジェクトを追加できるので、「追いかける対象になるオブジェクト」を追加します。

(僕の場合はMaxを追加します。)

f:id:bookreadkun:20190201070639p:plain

 

次に「追いかける敵」が動ける範囲を選択します。

追いかける敵はNavMeshの上しか移動することが出来ません。

 

フィールドを選択します(僕の場合はTerrain)。

インスペクタービューの「Static」を選択し、ツールバーからWindow→Navigationを選択します。

 

Bakeボタンを選択した後、右下の「Bake」をクリックで完了となります。

f:id:bookreadkun:20190201070705p:plain

 

Bakeをクリックした後に一定時間待機しないといけませんが、待機中に再生ボタンをクリックすると「Bakeを止めていいんですか?続けますか?」というポップアップウィンドウが出るので注意してください。

 

僕はこの「Bake」が完了するまでにもの凄く時間が掛かりましたのでもしかすると結構待つことになるかもしれませんね。。。

 

Bake終了後に再生ボタンを押すと、敵が追いかけてくることが分かります。

インスペクタービューのSpeed欄にて相手のスピードが調節出来ます。

f:id:bookreadkun:20190201070733p:plain

 

最後に

いや~、それにしてもUnityはホント便利っすね~!

Nav Mesh Agentという、相手を追跡する機能まで付いているとは。。。

 

ぜひ「追いかけてくる敵」などを作る際は使ってみてくださいね!