la classe NavMesh

Classe singleton pour accéder au NavMesh. Le NavMesh est une classe pouvant être utilisée pour effectuer des recherches spatiales, comme des tests de pathfinding et de walkability, définir le coût pathfinding pour les types de zone spécifiques et de modifier le comportement global du pathfinding.

Afin d'utiliser les requêtes spatiales, vous devez d'abord créer un NavMesh dans votre scène.

    Voir également :
  • Créer un NavMesh - pour plus d'informations sur la configuration et la création d'un NavMesh.
  • Zones et coûts - pour apprendre à utiliser différents types de zones.
  • NavMeshAgent - pour savoir comment contrôler et déplacer les agents NavMesh.
  • NavMeshObstacle - pour savoir comment contrôler les obstacles NavMesh à l'aide de scripts.
  • OffMeshLink - pour savoir comment contrôler les liens Off-Mesh en utilisant les scripts.

Variables statiques

AllAreasConstante de masque de zone qui inclut toutes les zones NavMesh.
avoidancePredictionTimeDécrit dans quelle mesure, à l'avenir, les agents prévoient d'éviter les collisions.
onPreUpdateDéfinir une fonction à appeler avant que le NavMesh soit mis à jour pendant l'exécution de la mise à jour du frame.
pathfindingIterationsPerFrameLa quantité maximale de nœuds traités chaque frame dans le processus pathfinding asynchrone.

Fonctions statiques

AddLinkAjoute un lien vers NavMesh. Le lien est décrit par la structure NavMeshLinkData.
AddNavMeshDataAjoute le NavMeshData spécifié au jeu.
CalculatePathCalcul un chemin entre deux points et stocke le chemin résultant.
CalculateTriangulationCalcule la triangulation du navmesh actuel.
CreateSettingsCréé et renvoie une nouvelle entrée des paramètres de construction NavMesh disponibles pour l'exécution de la structure NavMesh.
FindClosestEdgeLocalise le bord NavMesh le plus proche d'un point sur NavMesh.
GetAreaCostObtient le coût de recherche du chemin d'accès sur la géométrie du type de zone.
GetAreaFromNameRenvoie l'index de zone pour un type de zone NavMesh nommé.
GetSettingsByIDRenvoie une entrée existante des paramètres de construction NavMesh.
GetSettingsByIndexRenvoie une entrée existante des paramètres de construction NavMesh par son index ordonné.
GetSettingsCountRenvoie le nombre de paramètres de construction NavMesh enregistrés.
GetSettingsNameFromIDRenvoie le nom associé aux paramètres de construction NavMesh correspondant à l'ID de type d'agent fourni.
RaycastTrace une ligne entre deux points sur le NavMesh.
RemoveLinkSupprime un lien du NavMesh.
RemoveNavMeshDataSupprime le NavMeshDataInstance spécifié du jeu, ce qui le rend indisponible pour les agents et les requêtes.
RemoveSettingsSupprime les paramètres de construction correspondant à l'ID du type d'agent.
SamplePositionTrouve le point le plus proche du NavMesh dans la plage spécifiée.
SetAreaCostDéfinit le coût pour trouver le chemin sur la géométrie du type de zone sur tous les agents.

Délégués

OnNavMeshPreUpdateUn délégué qui peut être utilisé pour enregistrer des méthodes de rappel à invoquer avant la mise à jour du système NavMesh.

NavMesh.AllAreas

public static int AllAreas;

Constante de masque de zone qui inclut toutes les zones NavMesh.

Le masque peut être utilisé dans les fonctions de requête, comme NavMesh.Raycast, pour indiquer que tous les types de zones NavMesh sont acceptés.

C#// TargetReachable
using UnityEngine;
using UnityEngine.AI;

public class TargetReachable : MonoBehaviour
{
    public Transform target;
    private NavMeshHit hit;
    private bool blocked = false;

    void Update()
    {
        // Permet de passer à travers tous les types de zones lors du test si la position cible
        // est accessible depuis l'emplacement de la transformation.
        blocked = NavMesh.Raycast(transform.position, target.position, out hit, NavMesh.AllAreas);
        Debug.DrawLine(transform.position, target.position, blocked ? Color.red : Color.green);
        if (blocked)
            Debug.DrawRay(hit.position, Vector3.up, Color.red);
    }
}

NavMesh.avoidancePredictionTime

public static float avoidancePredictionTime;

Décrit dans quelle mesure, à l'avenir, les agents prévoient d'éviter les collisions.

Plus la valeur est importante, plus tôt les agents commenceront à s'éviter les uns les autres s'ils entre en collision. La valeur est mesurée en secondes. La valeur par défaut est 2.0, une bonne plage de réglage est comprise entre 0,5 et 5,0.

NavMesh.onPreUpdate

public static AI.NavMesh.OnNavMeshPreUpdate onPreUpdate;

Définir une fonction à appeler avant que le NavMesh soit mis à jour pendant l'exécution de la mise à jour du frame. Cela vous permet de définir une fonction de délégué pour être appelée chaque frame, juste avant que le système NavMesh ne soit mis à jour.

NavMesh.pathfindingIterationsPerFrame

public static int pathfindingIterationsPerFrame;

La quantité maximale de nœuds traités chaque frame dans le processus pathfinding asynchrone.

Le pathfinder développe seulement une certaine quantité de noeuds (polygones NavMesh) de chaque frame lors de la recherche de chemin. Cela permet au jeu de fonctionner en douceur sans un hoquet lorsque de longs chemins ou un grand nombre de demandes sont en cours de traitement en même temps.

Le nombre d'itération n'affecte que le repérage asynchrone du chemin utilisé lors du paramétrage de NavMesh Agent en utilisant NavMeshAgent.SetDestination ou NavMeshAgent.destination.

L'augmentation de cette valeur entraînera une trajectoire plus rapide des trajets, mais peut causer des problèmes sur le taux d'images. La valeur par défaut est 100, une bonne plage de réglage est comprise entre 50 et 500.

public static AI.NavMeshLinkInstance AddLink(AI.NavMeshLinkData link);

Paramètres

linkDécrit les propriétés du lien.

Retourne

NavMeshLinkInstanceReprésente le lien ajouté.

Description

Ajoute un lien vers NavMesh. Le lien est décrit par la structure NavMeshLinkData. Renvoie une instance pour le lien ajouté.

Remarque: Si la zone est définie sur Not Walkable, ou si l'ajout d'un lien dépasse le nombre maximum de liens actifs (65535), la lien ne sera pas ajoutée - et la propriété valide sera fausse.

public static AI.NavMeshLinkInstance AddLink(AI.NavMeshLinkData link, Vector3 position, Quaternion rotation);

Paramètres

linkDécrit les propriétés du lien.
positionTransforme le lien vers cette position.
rotationFait pivoter le lien vers cette orientation.

Cette fonction est similaire à AddLink ci-dessus, mais la position et la rotation spécifiées sont appliquées aux positions de début et de fin du lien. La rotation spécifie également l'axe vertical local du lien.

NavMesh.AddNavMeshData

public static AI.NavMeshDataInstance AddNavMeshData(AI.NavMeshData navMeshData);

Paramètres

navMeshDataContient les données pour le navmesh.

Retourne

NavMeshDataInstanceReprésente le navmesh ajouté.

Description

Ajoute le NavMeshData spécifié au jeu. Cela rend les données NavMesh disponibles pour les agents et les requêtes NavMesh. Retourne une instance pour supprimer ultérieurement les données navmesh du Runtime.

L'instance renvoyée sera valide à moins que les données NavMesh ne puissent être ajoutées - par exemple : En raison de l'absence de mémoire ou du chargement des données navmesh à partir d'un fichier corrompu. Voir aussi NavMeshDataInstanca.

public static AI.NavMeshDataInstance AddNavMeshData(AI.NavMeshData navMeshData, Vector3 position, Quaternion rotation);

Paramètres

navMeshDataContient les données pour le navmesh.
positionTransforme le navmesh sur cette position.
rotationFait pivoter le navmesh vers cette orientation.

Description

Cette fonction est similaire à AddNavMeshData ci-dessus, mais la position et la rotation spécifiées sont appliquées en plus de la position et de la rotation où les données NavMesh ont été bake.

C#using UnityEngine;
using UnityEngine.AI;

class Example : MonoBehaviour
{
    public NavMeshData data;
    NavMeshDataInstance[] instances = new NavMeshDataInstance[2];

    public void OnEnable()
    {
        // Ajoute une instance de données navmesh
        instances[0] = NavMesh.AddNavMeshData(data);

        // Ajoute une autre instance de la même information de navmesh - déplacée et tournée
        instances[1] = NavMesh.AddNavMeshData(data, new Vector3(0, 5, 0), Quaternion.AngleAxis(90, Vector3.up));
    }

    public void OnDisable()
    {
        instances[0].Remove();
        instances[1].Remove();
    }
}

les réactions

Pour laisser un avis, vous devez être inscrit et connecté

Se connecter