AI/Navmesh 機能を使用している場合は、Unity 4 から Unity 5 へ移行するときに注意しなければいけない点があります。
Navmesh の区切り方法に変更があったため形状の見た目が異なる場合があります。狭い廊下/出入口を実装している場合に発生しやすくなります。これは見た目通り、Navmesh の接続が途切れる可能性があります。この問題は、Navmesh のビルド設定でボクセルサイズを小さくすることによってこの問題を解決することができます。
NavMeshAgent は Stop 関数を呼び出した後に目的地を設定しても勝手に動き出すことはありません。再度動かすには Resume 関数を呼び出します。
NavMeshAgent.updatePosition: updatePosition が false のときに、エージェントの Transform が動いてもエージェントの位置は変化しません。Navmesh 以外の変更を受け付けないようにエージェントの位置はリセットされます。
NavMeshObstacle コンポーネント: NavMeshObstacle コンポーネントはカプセル状に加え、ボックスの形状をデフォルトとして選択できるようになりました。これらの形状は、Navmesh のくりぬきと障害物の作成で使用できます。
Unity 4 でビルドされた Navmesh はサポートされていません。Unity 5 上で再度ビルドする必要があります。すべてのシーンの Navmesh をリビルドする方法として下記のスクリプトを使用してみてください。
# if UNITY_EDITOR
using System.Collections.Generic;
using System.Collections;
using System.IO;
using UnityEditor;
using UnityEngine;
using UnityEngine.AI;
public class RebakeAllScenesEditorScript
{
[MenuItem ("Upgrade helper/Bake All Scenes")]
public static void Bake()
{
List<string> sceneNames = SearchFiles (Application.dataPath, "*.unity");
foreach (string f in sceneNames)
{
EditorApplication.OpenScene(f);
// NavMesh データを再ベイク
NavMeshBuilder.BuildNavMesh ();
EditorApplication.SaveScene ();
}
}
static List<string> SearchFiles(string dir, string pattern)
{
List <string> sceneNames = new List <string>();
foreach (string f in Directory.GetFiles(dir, pattern, SearchOption.AllDirectories))
{
sceneNames.Add (f);
}
return sceneNames;
}
}
# endif