Bird
Raised Fist0
Unityframework~5 mins

Pathfinding basics in Unity - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is pathfinding in game development?
Pathfinding is the process of finding a route from one point to another, usually for characters or objects to move around obstacles in a game world.
Click to reveal answer
beginner
Name a common algorithm used for pathfinding.
A common algorithm is A* (A-star), which finds the shortest path efficiently by combining the cost to reach a node and an estimate to the goal.
Click to reveal answer
beginner
What is a 'node' in pathfinding?
A node is a point or position in the game world that the pathfinding algorithm considers when finding a path. Nodes are connected to neighbors to form a graph.
Click to reveal answer
intermediate
Why do we use heuristics in pathfinding algorithms like A*?
Heuristics estimate the distance from a node to the goal, helping the algorithm prioritize which paths to explore first and find the shortest path faster.
Click to reveal answer
intermediate
What is the difference between grid-based and navmesh pathfinding?
Grid-based pathfinding uses a grid of squares or cells to find paths, while navmesh uses a mesh of polygons that better represent walkable areas, allowing smoother movement.
Click to reveal answer
Which algorithm is commonly used for finding the shortest path in games?
ABinary Search
BBubble Sort
CA* (A-star)
DDepth First Search
In pathfinding, what does a 'node' represent?
AA type of enemy
BA character's health
CA sound effect
DA point or position in the game world
What is the purpose of a heuristic in A* pathfinding?
ATo estimate distance to the goal
BTo increase the path length
CTo slow down the algorithm
DTo create obstacles
Which pathfinding method uses polygons to represent walkable areas?
AGrid-based
BNavmesh
CBinary Tree
DLinked List
What does pathfinding help a game character do?
AMove around obstacles to reach a target
BChange its color
CPlay background music
DSave game progress
Explain how the A* algorithm finds a path from start to goal.
Think about how A* uses both the distance traveled and an estimate to the goal.
You got /5 concepts.
    Describe the difference between grid-based and navmesh pathfinding and when you might use each.
    Consider how the shape of the walkable area affects character movement.
    You got /5 concepts.

      Practice

      (1/5)
      1. What is the main purpose of pathfinding in Unity games?
      easy
      A. To help game objects move from one point to another avoiding obstacles
      B. To create visual effects like explosions
      C. To manage game audio settings
      D. To design user interface layouts

      Solution

      1. Step 1: Understand pathfinding concept

        Pathfinding is used to find a route for characters or objects to move smartly in a game world.
      2. Step 2: Identify Unity's use of pathfinding

        Unity uses pathfinding to move game objects from one point to another while avoiding obstacles.
      3. Final Answer:

        To help game objects move from one point to another avoiding obstacles -> Option A
      4. Quick Check:

        Pathfinding = smart movement [OK]
      Hint: Pathfinding = smart movement avoiding obstacles [OK]
      Common Mistakes:
      • Confusing pathfinding with graphics or audio
      • Thinking pathfinding manages UI
      • Assuming pathfinding creates effects
      2. Which of the following is the correct way to set a destination for a NavMeshAgent in Unity?
      easy
      A. agent.Navigate(target.position);
      B. agent.MoveTo(target.position);
      C. agent.GoTo(target.position);
      D. agent.SetDestination(target.position);

      Solution

      1. Step 1: Recall NavMeshAgent method for setting destination

        The correct method to set a destination is SetDestination(Vector3 target).
      2. Step 2: Match method names with options

        Only agent.SetDestination(target.position); uses SetDestination correctly; others are invalid method names.
      3. Final Answer:

        agent.SetDestination(target.position); -> Option D
      4. Quick Check:

        SetDestination sets target [OK]
      Hint: Remember NavMeshAgent uses SetDestination() method [OK]
      Common Mistakes:
      • Using non-existent methods like MoveTo or GoTo
      • Forgetting to pass target.position as Vector3
      • Confusing method names with other APIs
      3. What will be the output of this Unity C# code snippet?
      using UnityEngine;
      using UnityEngine.AI;
      
      public class MoveAgent : MonoBehaviour {
          public Transform target;
          private NavMeshAgent agent;
      
          void Start() {
              agent = GetComponent<NavMeshAgent>();
              agent.SetDestination(target.position);
          }
      
          void Update() {
              if (agent.remainingDistance < 0.5f) {
                  Debug.Log("Reached target");
              }
          }
      }
      medium
      A. Logs "Reached target" immediately on start
      B. Logs "Reached target" when agent is close to target
      C. Throws a runtime error because NavMeshAgent is missing
      D. Never logs anything

      Solution

      1. Step 1: Understand NavMeshAgent behavior in Start()

        The agent sets its destination to the target's position at start.
      2. Step 2: Check Update() condition for logging

        When the agent is within 0.5 units of the target, it logs "Reached target".
      3. Final Answer:

        Logs "Reached target" when agent is close to target -> Option B
      4. Quick Check:

        Agent logs on close arrival [OK]
      Hint: remainingDistance < 0.5 triggers log near target [OK]
      Common Mistakes:
      • Assuming log happens immediately
      • Ignoring NavMeshAgent setup requirement
      • Thinking it throws error without NavMeshAgent component
      4. Identify the error in this Unity C# code for pathfinding:
      public class AgentMover : MonoBehaviour {
          public Transform target;
          private NavMeshAgent agent;
      
          void Start() {
              agent = GetComponent<NavMeshAgent>();
              agent.SetDestination(target);
          }
      }
      medium
      A. SetDestination requires a Vector3, not a Transform
      B. NavMeshAgent component is not assigned
      C. Missing Update method to move agent
      D. target variable should be private

      Solution

      1. Step 1: Check SetDestination parameter type

        SetDestination expects a Vector3 position, but target is a Transform object.
      2. Step 2: Correct usage of SetDestination

        Use target.position to pass Vector3 instead of target directly.
      3. Final Answer:

        SetDestination requires a Vector3, not a Transform -> Option A
      4. Quick Check:

        SetDestination needs Vector3 [OK]
      Hint: Use target.position, not target, in SetDestination [OK]
      Common Mistakes:
      • Passing Transform instead of Vector3
      • Assuming NavMeshAgent auto-assigns
      • Thinking Update method is mandatory for movement
      5. You want a NavMeshAgent to move to a target only if the path is valid and reachable. Which code snippet correctly checks this before moving?
      hard
      A. if (agent.CalculatePath(target.position, new NavMeshPath()) && agent.SetDestination(target.position)) { /* move */ }
      B. agent.SetDestination(target.position); if (agent.pathStatus == NavMeshPathStatus.PathComplete) { /* move */ }
      C. NavMeshPath path = new NavMeshPath(); if (agent.CalculatePath(target.position, path) && path.status == NavMeshPathStatus.PathComplete) { agent.SetDestination(target.position); }
      D. if (agent.isOnNavMesh) { agent.SetDestination(target.position); }

      Solution

      1. Step 1: Understand path validation with CalculatePath

        CalculatePath fills a NavMeshPath object and returns true if path calculation succeeded.
      2. Step 2: Check path status for completeness

        Only if path.status is PathComplete is the path valid and reachable.
      3. Step 3: Set destination only if path is valid

        NavMeshPath path = new NavMeshPath(); if (agent.CalculatePath(target.position, path) && path.status == NavMeshPathStatus.PathComplete) { agent.SetDestination(target.position); } correctly creates a path, checks status, then sets destination.
      4. Final Answer:

        NavMeshPath path = new NavMeshPath(); if (agent.CalculatePath(target.position, path) && path.status == NavMeshPathStatus.PathComplete) { agent.SetDestination(target.position); } -> Option C
      5. Quick Check:

        CalculatePath + PathComplete check = safe move [OK]
      Hint: Use CalculatePath and check PathComplete before SetDestination [OK]
      Common Mistakes:
      • Ignoring path status after CalculatePath
      • Calling SetDestination without path check
      • Using wrong method signatures
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard