This is a simple path data container. Basically a list of points that
a FlxObject
can follow. Also has code for drawing debug visuals.
FlxTilemap.findPath()
returns a path usable by FlxPath
, but you can
also just make your own, using the add()
functions below
or by creating your own array of points.
Every FlxObject
has a path
property which can make it move along specified array of way points.
Usage example:
var path = new FlxPath();
var points:Array<FlxPoint> = [new FlxPoint(0, 0), new FlxPoint(100, 0)];
object.path = path;
path.start(points, 50, FORWARD);
You can also do this in one line:
object.path = new FlxPath().start([new FlxPoint(0, 0), new FlxPoint(100, 0)], 50, FORWARD);
...or using some more chaining:
object.path = new FlxPath().add(0, 0).add(100, 0).start(50, FORWARD);
If you are fine with the default values of start (speed, mode, auto-rotate) you can also do:
object.path = new FlxPath([new FlxPoint(0, 0), new FlxPoint(100, 0)]).start();
Constructor
Variables
read onlyangle:Float = 0
The angle in degrees between this object and the next node, where -90 is directly upward, and 0 is to the right.
angleOffset:Float = 0
The amount of degrees to offset from the path's angle, when autoRotate
is true
. To use
flixel 4.11's autoRotate behavior, set this to 90
, so there is no rotation at 0 degrees.
5.0.0
.See also:
autoCenter:Bool
Legacy method of alignment for the object following the path. If true, align the midpoint of the object on the path, else use the x, y position.
autoRotate:Bool = false
Whether the object's angle should be adjusted to the path angle during path follow behavior.
ignoreDrawDebug:Bool = false
Setting this to true will prevent the object from appearing when FlxG.debugger.drawDebug is true.
Methods
add(x:Float, y:Float):FlxPath
Add a new node to the end of the path at the specified location.
Parameters:
x | X position of the new path point in world coordinates. |
---|---|
y | Y position of the new path point in world coordinates. |
Returns:
This path object.
addAt(x:Float, y:Float, index:Int):FlxPath
Add a new node to the path at the specified location and index within the path.
Parameters:
x | X position of the new path point in world coordinates. |
---|---|
y | Y position of the new path point in world coordinates. |
index | Where within the list of path nodes to insert this new point. |
Returns:
This path object.
addPoint(node:FlxPoint, asReference:Bool = false):FlxPath
Sometimes its easier or faster to just pass a point object instead of separate X and Y coordinates. This also gives you the option of not creating a new node but actually adding that specific FlxPoint object to the path. This allows you to do neat things, like dynamic paths.
Parameters:
node | The point in world coordinates you want to add to the path. |
---|---|
asReference | Whether to add the point as a reference, or to create a new point with the specified values. |
Returns:
This path object.
addPointAt(node:FlxPoint, index:Int, asReference:Bool = false):FlxPath
Sometimes its easier or faster to just pass a point object instead of separate X and Y coordinates. This also gives you the option of not creating a new node but actually adding that specific FlxPoint object to the path. This allows you to do neat things, like dynamic paths.
Parameters:
node | The point in world coordinates you want to add to the path. |
---|---|
index | Where within the list of path nodes to insert this new point. |
asReference | Whether to add the point as a reference, or to create a new point with the specified values. |
Returns:
This path object.
drawDebug(?camera:FlxCamera):Void
While this doesn't override FlxBasic.drawDebug()
, the behavior is very similar.
Based on this path data, it draws a simple lines-and-boxes representation of the path
if the drawDebug
mode was toggled in the debugger overlay.
You can use debugColor
to control the path's appearance.
Parameters:
camera | The camera object the path will draw to. |
---|
remove(node:FlxPoint):FlxPoint
Remove a node from the path. NOTE: only works with points added by reference or with references from nodes itself!
Parameters:
node | The point object you want to remove from the path. |
---|
Returns:
The node that was excised. Returns null if the node was not found.
removeAt(index:Int):FlxPoint
Remove a node from the path using the specified position in the list of path nodes.
Parameters:
index | Where within the list of path nodes you want to remove a node. |
---|
Returns:
The node that was excised. Returns null if there were no nodes in the path.
reset():FlxPath
Just resets some debugging related variables (for debugger renderer).
Also resets centerMode
to CENTER
.
Returns:
This path object.
restart():FlxPath
Restarts this path. So object starts movement again from the first (or last) path point (depends on path movement behavior mode).
Returns:
This path object.
setNode(nodeIndex:Int):FlxPath
Change the path node this object is currently at.
Parameters:
NodeIndex | The index of the new node out of path.nodes. |
---|
setProperties(speed:Float = 100.0, mode:FlxPathType = FlxPathType.FORWARD, autoRotate:Bool = false):FlxPath
Sets the following properties: speed
, mode
and auto rotation.
Parameters:
speed | The speed at which the object is moving on the path. |
---|---|
mode | Path following behavior (like looping, horizontal only, etc). |
autoRotate | Whether the object's angle should be adjusted to the path angle during path follow behavior. Note that moving straight right is 0 degrees, when angle angleOffset is 0. |
Returns:
This path object.
4.2.0
.start(?nodes:Array<FlxPoint>, speed:Float = 100.0, mode:FlxPathType = FlxPathType.FORWARD, autoRotate:Bool = false, nodesAsReference:Bool = false):FlxPath
Starts movement along specified path.
Parameters:
nodes | An optional array of path waypoints. If null then previously added points will be used. Movement is not started if the resulting array has no points. |
---|---|
speed | The speed at which the object is moving on the path. |
mode | Path following behavior (like looping, horizontal only, etc). |
autoRotate | The object's angle should be adjusted to the path angle during path follow behavior. |
nodesAsReference | To pass the input array as reference (true) or to copy the points (false). Default is false. |
Returns:
This path object.