おはようございます。おーみんです。
今日は敵がプレイヤーのところへ追随する設定のみ。
— 超おーみん2@Unity民族 (@Ooooooomin_365) 2019年1月31日
というか、今日は謎にPC重くてNavigationのbakeだけで相当時間取られるというww
明日こそは相手がダメージを受けた時のアニメーションからHP設定あたりまではいきたい。#unity #unity3d pic.twitter.com/CkbGYqGEiQ
今回の記事では追いかけてくる敵の作り方について書いていこうと思います。
以下のサイト様を参考にさせていただきました。本当にありがとうございます。
https://codegenius.org/open/courses/24/sections/116
追いかけてくる敵の作り方
まずオブジェクトを2つ用意。
「追いかけてくる敵」と「追いかける対象になるオブジェクト」です。
(僕の場合は前者をOliver、後者をMaxとしています。)
次に、「追いかけてくる敵」のインスペクタビューにて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を追加します。)
次に「追いかける敵」が動ける範囲を選択します。
追いかける敵はNavMeshの上しか移動することが出来ません。
フィールドを選択します(僕の場合はTerrain)。
インスペクタービューの「Static」を選択し、ツールバーからWindow→Navigationを選択します。
Bakeボタンを選択した後、右下の「Bake」をクリックで完了となります。
Bakeをクリックした後に一定時間待機しないといけませんが、待機中に再生ボタンをクリックすると「Bakeを止めていいんですか?続けますか?」というポップアップウィンドウが出るので注意してください。
僕はこの「Bake」が完了するまでにもの凄く時間が掛かりましたのでもしかすると結構待つことになるかもしれませんね。。。
Bake終了後に再生ボタンを押すと、敵が追いかけてくることが分かります。
インスペクタービューのSpeed欄にて相手のスピードが調節出来ます。
最後に
いや~、それにしてもUnityはホント便利っすね~!
Nav Mesh Agentという、相手を追跡する機能まで付いているとは。。。
ぜひ「追いかけてくる敵」などを作る際は使ってみてくださいね!