

The area mask is useful when you want only certain types characters to be able to walk through an area. The area mask can be set in the agent properties, or the bitmask can be manipulated using a script at runtime. Area MaskĮach agent has an Area Mask which describes which areas it can use when navigating. Which can be helpful if you need to block out an area. There is one exception however: Not Walkable always takes precedence. If several objects of different area types are overlapping, the resulting navmesh area type will generally be the one with the highest index. Jump is an area type that is assigned to all auto-generated Off-Mesh Links.It is useful for cases where you want to mark certain object to be an obstacle, but without getting NavMesh on top of it. Not Walkable is a generic area type which prevents navigation.Walkable is a generic area type which specifies that the area can be walked on.There are 29 custom types, and 3 built-in types: Walkable, Not Walkable, and Jump. The area types are specified in the Navigation Window’s Areas tab.

The cost per area type can be set globally in the Areas tab, or you can override them per agent using a script. In such cases the nodes on the big polygons may get placed anywhere in the big polygon and from the pathfinder’s point of view it looks like a detour. The effect can be noticeable in scenarios where big open areas are next to tiny obstacles, which results navigation mesh with very big and small polygons. The reason for this is the node placement. But it can be challenging to tune a behavior where the agents to prefer to walk on sidewalks.Īnother thing you may notice on some levels is that the pathfinder does not always choose the very shortest path. For example, if you want the agents to not to use Off-Mesh Links too often, you could increase their cost. The best way to approach costs is to treat them as hints. The effect of the costs on the resulting path can be hard to tune, especially for longer paths. The A* algorithm requires that all costs must be larger than 1.0. In practice this means, that if the cost of an area is 2.0, the distance across such polygon will appear to be twice as long. The cost to move between two nodes depends on the distance to travel and the cost associated with the area type of the polygon under the link, that is, distance * cost. The yellow dots and lines in the above picture shows how the nodes and links are placed on the NavMesh, and in which order they are traversed during the A*. The shortest path is then calculated between these nodes. More info See in Glossary of polygons, the first thing the pathfinder needs to do is to place a point on each polygon, which is the location of the node. Nurbs, Nurms, Subdiv surfaces must be converted to polygons. Unity supports triangulated or Quadrangulated polygon meshes. Meshes make up a large part of your 3D worlds. Since the Unity navigation representation is a mesh The main graphics primitive of Unity. The algorithm starts from the nearest node to the path start and visits the connect nodes until the destination is reached. Unity uses A* to calculate the shortest path on the NavMesh. Nodes and links visited during pathfinding. To fully understand how the cost works, let’s take a look at how the pathfinder works. For example, if you set the cost of an area to 3.0, traveling across that area is considered to be three times longer than alternative routes. In a nutshell, the cost allows you to control which areas the pathfinder favors when finding a path. The area type can be assigned to every object that is included in the NavMesh baking, in addition, each Off-Mesh Link has a property to specify the area type. Door area is made accessible by specific characters, to create a scenario where humans can walk through doors, but zombies cannot.Water area is made more costly to walk by assigning it a higher cost, to deal with a scenario where walking on shallow water is slower.In the above example the area types are used for two common use cases: More info See in Glossary Agent has an Area Mask which can be used to specify on which areas the agent can move. In addition each NavMesh A mesh that Unity generates to approximate the walkable areas and obstacles in your environment for path finding and AI-controlled navigation. The Navigation Areas define how difficult it is to walk across a specific area, the lower cost areas will be preferred during path finding.
