Version: 2018.1
Actualizando a Unity 5.0
Animación en Unity 5.0

AI (Inteligencia artificial) en Unity 5.0

Estas son notas para tener en cuenta cuando actualice proyectos de Unity 4 a Unity 5, si su proyecto utiliza las características AI/Navmesh.

  • El Navmesh contour puede verse diferente debido a un cambio en la partición - en casos con corredores/puertas de entrada muy angostas o similar - esto puede llevar a una diferencia en la conectividad. Arregle el problema al ajustar el tamaño voxel para el navmesh building.

  • Configurando el destino para el NavMeshAgent no reanudará el agente después de llamar ‘Stop’ - llame ‘Resume’ explícitamente para reanudar al agente.

  • NavMeshAgent.updatePosition: Cuando updatePosition es falso y el transform del agente es movido, la posición del agente no cambia. Previamente la posición del agente se hubiera reset a la posición del transform - limitado al navmesh cercano.

  • NavMeshObstacle component: La figura predeterminada para nuevos componentes NavMeshObstacle creados es una caja. La figura seleccionada (caja o cápsula) ahora aplica a ambos carving y avoidance.

  • Navmesh construido con anteriores versiones de Unity no es soportado. Usted tendrá que reconstruirlo con Unity 5. Usted puede utilizar la siguiente script como un ejemplo acerca de cómo reconstruir los datos del NavMesh para todas sus escenas.

Script Ejemplo para Rebake

#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);
 
            // Rebake navmesh data
            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
Actualizando a Unity 5.0
Animación en Unity 5.0