Pathfinding

See Pathfinding behavior examples

Pathfinding behavior allows us to move objects to a selected destination as well as to flag items as obstacles. Objects that are flagged as obstacles will be avoided by the moving objects.

Step 1) Add "Pathfinding" behavior to objects that will travel

To add the Pathfinding behavior to an object, as usual, create the object. Then open the object's properties by right-clicking on the Objects list located on the right of the Scene Interface. Select “Edit object” from the popup list.

Now, select the behavior tab and click the “add behavior” button.

Next, we have two options to choose from:

“Pathfinding behavior” allows us to move the object to a destination while avoiding all objects that have the “Obstacle for Pathfinding”.

After we add the behavior to the object, we can customize a number of options.

  • acceleration: this is how fast our object is going to accelerate while moving on a path.
  • allow diagonals: test whether or not the object can move in diagonals.
  • angle offset: in case our sprite is facing the wrong direction we can set the angle offset
  • extra border size: sets the border size around the object. This setting determines how close the object can move to the obstacles.
  • max speed: maximum speed the object can move on the path.
  • rotate object: if you don't want the object to rotate while moving on the path, disable the object's rotation.
  • rotate speed: sets the speed of the object's rotation.
  • virtual cell height and width: our path is generated using a virtual grid. We can change the size of the cells here, the smaller the cell size, the smoother the movement is going to be. A smaller cell size implies more calculations so try to still keep the size as large as possible.

Step 2: Add "Obstacle for Pathfinding" behavior to objects that should be avoided

By using the “Pathfinding obstacle behavior”, we can flag any object to be an obstacle. After we add the behavior to the object, we have two options to customize:

  • impassable: if we enable this, the obstacle is going to be impassable. The moving object is going to avoid it at all cost.
  • cost: if the obstacle is not impassable, we can set a cost for the obstacle. The moving object, when looking for the best possible path to a destination, is going to prefer to avoid the obstacle with high-cost values. For example, a river might have some cost. The moving object, if possible, will avoid it. However, if there is no other way around the river, or if the river has a lower cost compared to another area, the moving object will go through it (instead of climbing a mountain with a higher cost for example). And if we put crocodiles into the river and increase its cost, the moving object might decide to climb the mountains instead.

Step 3: Create an action to move the Pathfinding object

To initiate a pathfinding move, add the action “Move to a position” and specify the location you want the object to move to. It will move using the characteristics defined in the behavior properties. If you want to change how the object moves during the game, these properties can be changed using actions.

The “Move to a position” action only needs to be run once. If you run this action with no conditions, it will try to recalculate the path every frame and your object will NOT move. One way to make sure this action only runs once is to add a condition that makes sure the object pathfinder speed is 0.

Examples

See it in action! 🎮
Open these examples online.

General Path Finding Behavior


Path Finding Basics