Unity-Notes/Scripting/UnityEngine.AI/Classes/NavMesh.md
2024-10-23 16:56:01 -04:00

2.5 KiB
Raw Blame History

NavMesh Overview

The NavMesh system is your go-to for pathfinding and AI movement in 3D environments. Imagine you're baking a map that your game characters can navigate on — thats what the NavMesh is. You can tweak how characters move, handle obstacles, and even create custom paths.


Static Properties

Property Description
AllAreas Think of this as selecting everywhere your AI can walk.
avoidancePredictionTime How far in the future Unity should predict AI avoiding each other.
onPreUpdate A callback you can hook into right before the NavMesh updates.
pathfindingIterationsPerFrame Controls how much pathfinding Unity does each frame. More means better accuracy but slower frames.

Key Static Methods (Chill Teacher Mode)

1. AddLink

This method is all about creating custom paths between two points on the NavMesh — perfect if you want shortcuts or special routes.

NavMesh.AddLink(new NavMeshLinkData()
{
    startPosition = new Vector3(0, 0, 0),
    endPosition = new Vector3(10, 0, 10),
    width = 2.0f
});
  • Use Case: You want to build a bridge between two points that aren't directly connected.

2. CalculatePath

Wanna know how your AI is gonna move from Point A to Point B? Use this to calculate that path ahead of time.

NavMeshPath path = new NavMeshPath();
NavMesh.CalculatePath(startPos, endPos, NavMesh.AllAreas, path);
  • Cool Trick: You can check if the path is valid or not (path.status), which helps avoid bad routes.

3. FindClosestEdge

Ever needed to know where the closest boundary is in your NavMesh? This ones handy for that!

NavMeshHit hit;
if (NavMesh.FindClosestEdge(transform.position, out hit, NavMesh.AllAreas))
{
    Debug.Log("Edge found at: " + hit.position);
}
  • Why Its Useful: It's like your AI has a radar for walls and limits. Use it to keep them in bounds.

4. Raycast

This is like drawing an invisible line to see if the AI can walk straight to a point.

NavMeshHit hit;
if (!NavMesh.Raycast(startPos, endPos, out hit, NavMesh.AllAreas))
{
    Debug.Log("Line of sight is clear!");
}
  • Pro Tip: Use it to test if obstacles are in the way, so you can reroute AI.

These examples should give you a good starting point to experiment and make your AI navigation smarter. Keep in mind, youll need to bake your NavMesh in the scene first!

Generated by ChatGPT