A* Pathfinding Project
3.1.4
The A* Pathfinding Project for Unity 3D
|
Modifier which smooths the path. More...
Public Types | |
enum | SmoothType { Simple, Bezier, OffsetSimple, CurvedNonuniform } |
Public Member Functions | |
override void | Apply (Path p, ModifierData source) |
Main Post-Processing function. | |
List< Vector3 > | CurvedNonuniform (List< Vector3 > path) |
List< Vector3 > | SmoothBezier (List< Vector3 > path) |
List< Vector3 > | SmoothOffsetSimple (List< Vector3 > path) |
List< Vector3 > | SmoothSimple (List< Vector3 > path) |
Public Member Functions inherited from MonoModifier | |
virtual Vector3[] | Apply (Node[] path, Vector3 start, Vector3 end, int startIndex, int endIndex, NavGraph graph) |
virtual Vector3[] | Apply (Vector3[] path, Vector3 start, Vector3 end) |
virtual void | ApplyOriginal (Path p) |
void | Awake () |
Alerts the Seeker that this modifier exists. | |
void | OnDestroy () |
void | OnDisable () |
void | OnEnable () |
virtual void | PreProcess (Path p) |
Public Member Functions inherited from IPathModifier | |
void | Apply (Path p, ModifierData source) |
void | ApplyOriginal (Path p) |
void | PreProcess (Path p) |
Static Public Member Functions | |
static Vector3 | GetPointOnCubic (Vector3 a, Vector3 b, Vector3 tan1, Vector3 tan2, float t) |
Public Attributes | |
float | bezierTangentLength = 0.4F |
Length factor of the bezier curves' tangents'. | |
float | factor = 0.1F |
int | iterations = 2 |
Number of times to apply smoothing. | |
float | maxSegmentLength = 2F |
The length of the segments in the smoothed path when using uniformLength. | |
float | offset = 0.2F |
Offset to apply in each smoothing iteration when using Offset Simple. | |
SmoothType | smoothType = SmoothType.Simple |
Type of smoothing to use. | |
float | strength = 0.5F |
The strength of the smoothing. | |
int | subdivisions = 2 |
Number of times to subdivide when not using a uniform length. | |
bool | uniformLength = true |
Toggle to divide all lines in equal length segments. | |
Public Attributes inherited from MonoModifier | |
int | priority = 0 |
Higher priority modifiers are executed first. | |
Seeker | seeker |
Properties | |
override ModifierData | input [get] |
override ModifierData | output [get] |
Properties inherited from MonoModifier | |
abstract ModifierData | input [get] |
abstract ModifierData | output [get] |
int | Priority [get, set] |
Properties inherited from IPathModifier | |
ModifierData | input [get] |
ModifierData | output [get] |
int | Priority [get, set] |
Modifier which smooths the path.
This modifier can smooth a path by either moving the points closer together (Simple) or using Bezier curves (Bezier).
Attach this component to the same GameObject as a Seeker component.
This component will hook in to the Seeker's path post-processing system and will post process any paths it searches for. Take a look at the Modifier Priorities settings on the Seeker component to determine where in the process this modifier should process the path.
Several smoothing types are available, here follows a list of them and a short description of what they do, and how they work. But the best way is really to experiment with them yourself.
float maxSegmentLength = 2F |
The length of the segments in the smoothed path when using uniformLength.
A high value yields rough paths and low value yields very smooth paths, but is slower
float offset = 0.2F |
Offset to apply in each smoothing iteration when using Offset Simple.
float strength = 0.5F |
The strength of the smoothing.
A value from 0 to 1 is recommended, but values larger than 1 works too.
bool uniformLength = true |
Toggle to divide all lines in equal length segments.