front-end: AIMSteeringTag
A Steering Tag is used to assign optional data (relevant to steering algorithms) to a specific game object and, thus, to its corresponding percept. For example, the Significance
or an array of custom float values might be specified. Furthermore, it is possible to assign a label to a percept for identification purposes in behaviours concerning specific objects. Note that this component is completely optional and needs to be attached only if the additional data is needed, for example, if you write your own behaviour and you want to inject custom data through the float Values
.
This component has got the following specific properties.
Property | Description |
---|---|
Label | Identifies the percept corresponding to the perceived object by the given string. |
Significance | An additional multiplier for the ResultMagnitude . It can be used to weight the importance of different objects. |
Radius | Defines the radius of the given object. This radius is used as bounding volume approximation by RadiusSteeringBehaviour instances such that objects with different sizes work with the same parameterization. Behaviours using real bounding box informations are not affected. |
Values | A float array which can be used to inject custom data to a custom behaviour. For example, for a behaviour which needs to know the mass of an agent, this value can be written into this array. |
TrackVelocity | If enabled, the velocity of the game object is computed instead of using the value of an attached Rigidbody. |
UpdateLocalBounds | If enabled, the oriented bounding boxes (OBBs) of the game object are computed for each percept update. This is useful if the local bounds dynamically change at runtime, for instance, when the scale of the corresponding object changes dynamically. If this option is disabled (which is the default), the OBBs are updated only once for each newly perceived object. Thus, they are only re-computed if the object reference in an environment changes. |
IgnoreLocalBounds | If true, the perception pipeline will NOT obtain the local OOB for this object. This might be helpful, if you use physics models of your Rigidbody or Transform that have rotations beyond (-)180 degrees. You don't need this option in common scnenarios. Note, that you might receive them once and disable the updates afterwards using the API. |
Some behaviours need to know the velocity of a perceived game object (percept). So, there are two ways of obtaining this information. First, if a Rigidbody
is attached to an object, the velocity is obtained automatically. Second, by attaching a SteeringTag
and activating TrackVelocity
, the velocity is computed via the perception pipeline. If both conditions are met, the velocity of the SteeringTag
is always preferred.
The Significance
can be used to weight different objects like in the following abstract example: There is an agent which should collect gold coins. Different coin piles are distributed in the scene and they are sampled by the agent's Seek behaviour. There are two different types of piles, a small coin pile and a large pile. The agent should prefer larger piles over smaller piles, and so, the larger ones have a Significance
of 2, as against smaller piles may have a Significance
of 1.
The IgnoreLocalBounds
is a workaround for special scenarios. Since we need to rotate objects to obtain the OOB, physics of Rigidbody and Transform might get broken due to the clamping of rotations to [-180, 180] in Unity. Therefore you can use this option to prevent our pipeline from obtaining the bounds information for OOB. Note, that you might want to receive the information first, e.g. on the startup. In this case, you need to disable this option first and enable it after the first update.