下のこの記事を読めば、GIFのようにAgentが壁を移動する機能を実装することができます。
まず、下の画像のように床と壁となるオブジェクトを設置し、それぞれにNavMesh Surfaceを追加し、Bakeします。
この時、壁となるオブジェクトはX軸またはZ軸を90°回転させて設置してからBakeしてください。
空のオブジェクトを追加し、そのオブジェクトにNavMesh Linkをアタッチします。
次に、PositionsのStart Point・End Pointの値とWidthの値をそれぞれ床と壁に合うように調整します。
※NavMesh Linkについては、このページで解説しています。
画像のように、床と壁の適当な位置にAgent(赤色のオブジェクト)と目的地となるオブジェクト(青色のオブジェクト)を設置します。
Agentに、Nav Mesh Agentコンポーネントを追加しその後、下のコードのスクリプトをアタッチします。
using UnityEngine;
using UnityEngine.AI;
public class EnemyAgent : MonoBehaviour
{
private NavMeshAgent agent;
public GameObject target;
void Start()
{
agent = GetComponent<NavMeshAgent>();
}
void Update()
{
agent.destination = target.transform.position;
}
}
InspectorのTargetに目的地となるオブジェクトを設定します。
シーンを実行すると、Agentが垂直な壁に対しても動けるようになっています。
Nav Mesh Agentコンポーネントについては以下の記事で解説しています。