PlanarAvoid is intended to simply avoid obstacles based on their center positions (back-end class).
It extends the RadiusSteeringBehaviour. To calculate an appropriate avoidance direction, a combination of the dot product of the percept direction and the avoidance direction (given by the AvoidanceAngle) is used. This behaviour is a planar behaviour, and hence, works only with planar sensors. Thus, there are only 2 avoidance directions calculated, 'left' and 'right', relative to the agents movement direction (the normalized SteeringPercept.Velocity of the self percept is considered as the movement direction).
Back-end class of AIMPlanarAvoid. This behaviour is thread-safe.
Public Fields | |
float | AvoidanceAngle = 25f |
Influences the preferred avoidance direction relative to an agent's movement direction. More... | |
Vector3 | Up = Vector3.forward |
The direction which is used to rotate the forward direction about the specified AvoidanceAngle. More... | |
float | InnerRadius = 0.0f |
The minimum radius for considering percepts. More... | |
float | OuterRadius = 20f |
The maximum radius for considering percepts. More... | |
MappingType | RadiusMapping = MappingType.InverseLinear |
Determines how the startMagnitude is mapped according to the InnerRadius and OuterRadius. More... | |
Vector3 | ResultDirection |
The direction vector used for obtaining objective values. More... | |
float | ResultMagnitude |
The magnitude value used for obtaining objective values. More... | |
int | TargetObjective |
Defines the objective for writing values. More... | |
float | MagnitudeMultiplier = 1f |
Is multiplied to the ResultMagnitude in order to weight between different behaviours. More... | |
float | SensitivityOffset |
Is added to the Structure.Sensitivity as threshold for writing objective values. More... | |
ValueWritingType | ValueWriting = ValueWritingType.AssignGreater |
Sets the type for writing objective values. More... | |
LayerBlendingType | LayerBlending = LayerBlendingType.None |
Sets the operation for blending the behaviour results into the context. More... | |
LayerNormalizationType | LayerNormalization = LayerNormalizationType.None |
Sets the method for normalizing intermediate objective values while they are blended into the context. More... | |
MappingType | ValueMapping = MappingType.InverseLinear |
Sets the mapping type for obtaining objective values. More... | |
bool | UseSignificance = true |
Determines if the SteeringPercept.Significance (if there is a AIMSteeringTag) is multiplied to the ResultMagnitude in order to weight between different percepts. More... | |
bool | UseSensorProjection = true |
If true , Sensor.ProjectionMode is used as VectorProjection. More... | |
VectorProjectionType | VectorProjection = VectorProjectionType.None |
Sets the type for projecting the perceived vector data into a plane. More... | |
PresetVelocityType | PresetVelocity = PresetVelocityType.None |
If the value is anything other than PresetVelocityType.None, a game object's rotation and default forward direction is used to approximate its actual velocity. More... | |
PredictionType | Prediction = PredictionType.None |
If set to anything other than PredictionType.None, the position of the Self percept is updated according to the given velocity. More... | |
float | PredictionMagnitude = 0.0f |
Scales the velocity vector used for predicting the possible future position of an agent if Prediction is set to PredictionType.PredictionMagnitude. More... | |
readonly IList< T > | Percepts |
All percepts which are relevant for an agent. More... | |
Protected Fields | |
Vector3 | startDirection |
Direction from the self position to the percept position (including distance magnitude). More... | |
float | startMagnitude |
Magnitude obtained from mapping the percept position relative to InnerRadius and OuterRadius. More... | |
float | sqrInnerRadius |
Squared InnerRadius. More... | |
float | sqrOuterRadius |
Squared OuterRadius. More... | |
readonly SteeringPercept | self = new SteeringPercept() |
The data of the associated agent itself (read only). More... | |
readonly SteeringPercept | percept = new SteeringPercept() |
The data of the currently processed percept (read only). More... | |
IList< float > | objective |
Quick access to the currently processed objective. More... | |
ISensor< Structure > | sensor |
Quick access to the currently processed sensor. More... | |
IReceptor< Structure > | receptor |
Quick access to the currently processed receptor. More... | |
Structure | structure |
Quick access to the currently processed structure. More... | |
Vector3 | velocity = Vector3.forward |
The forward direction the agent moves towards and/or looks at by default. More... | |
Properties | |
override bool | forEachPercept [get] |
Determines if SteeringBehaviour.PerceptSteering is called within SteeringBehaviour.Behave (read only). More... | |
override bool | forEachReceptor [get] |
Determines if SteeringBehaviour.ReceptorSteering is called within SteeringBehaviour.Behave (read only). More... | |
override SteeringPercept | Self [get, set] |
The data of the associated agent itself. More... | |
Public Methods | |
override void | Behave () |
This method executes the main context steering algorithm and is called within Context.Evaluate in order to set/modify objective values for the associated Context.Problem. More... | |
Protected Methods | |
override void | PerceptSteering () |
Processes the steering algorithm for each percept using the same data for each processed receptor. More... | |
override bool | StartSteering () |
Sets the startDirection and startMagnitude accordingly to the position of the processed percept relative to the InnerRadius and OuterRadius of this behaviour. More... | |
virtual void | ReceptorSteering () |
This method gets called for each active shape receptor for each processed percept. More... | |