Active avoidance behaviour that utilizes percept bounding box information (back-end class).
Objective magnitudes are generated based on a plane perpendicular to percept bounds such that the agent prefers directions which guide it around the object (instead of simply going away from the obstacle, like in Flee). The only difference to Avoid is the method of calculating the plane used for the sensitivity mapping. Here, a capsule is constructed by using the extends of a percept's bounding box. Then, the closest point to the capsule is used to obtain the tangent plane for further calculations.
Public Fields | |
float | PlaneBend |
An angular offset for the plane which is used to write objective values to the context. More... | |
bool | UseVelocity |
Can be used to optimize the resulting objective values. More... | |
Vector3 | DefaultOrientation = Vector3.up |
Is used instead of the agent's velocity if UseVelocity is false . 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 | planeDirection1 |
The first direction vector defining the plane of the current percept. More... | |
Vector3 | planeDirection2 |
The second direction vector defining the plane of the current percept. More... | |
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 | |
Vector3 | Intersection [get] |
The intersection point in world coordinates lying on a capsule based on percept bounds (read only). More... | |
float | Smoothness [get, set] |
The plane for determining the resulting magnitude values moves smoothly around the corners of the perceived objects bounds. More... | |
BoundsType | BoundsType [get, set] |
Determines which bounding box model is used for this behaviour. More... | |
Vector3 | PlaneDirection1 [get] |
A normalized vector defining the first direction of the current plane (read only). More... | |
Vector3 | PlaneDirection2 [get] |
A normalized vector defining the second direction of the current plane (read only). More... | |
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 bool | IsPerceptSignificant () |
As the first called method in Avoid.StartSteering, it rejects percepts if they are too far away avoiding unnecessary calculations (similar to RadiusSteeringBehaviour.StartSteering). More... | |
override void | CalculatePlane () |
Overrides Avoid.CalculatePlane. More... | |
override bool | StartSteering () |
Determines a plane perpendicular towards the current percept and populates the context map using a plane-based sensitivity mapping. More... | |
virtual void | PerceptSteering () |
This method gets called once for each processed percept. More... | |
virtual void | ReceptorSteering () |
This method gets called for each active shape receptor for each processed percept. More... | |