front-end / back-end: AIMAdjust
| Adjust
inherits from: AIMRadiusSteeringBehaviour
| RadiusSteeringBehaviour
Adjust is a variation of Align. In contrast to Align, it iterates over a list of percepts (coming from environments / game object lists) to generate a ResultMagnitude
based on the percepts' directions. Since this is a very simple behaviour, it lacks any special properties. However, the mechanism of ValueWriting
can be utilized to achieve very different results which are similar to clustering approaches. To access the ValueWriting
property, you have to activate the advanced inspector (button with the empty circle which turns into a solid circle then).
This component does not have any specific properties. It just has got the properties inherited from RadiusSteeringBehaviour
.
Adjust
is quiet versatile. Instead of using the default ValueWriting
type AssignGreater
other types might also be useful, like Addition
which results in great magnitudes where clusters of similar oriented percepts are located, as shown in Figure 1. Here are some examples.
AssignGreater
: the direction of the closest percept gets the greatest magnitudeAssignLesser
: the direction of the percept with the greatest valid distance gets the greatest magnitudeAddition
: the behaviour clusters the most common distancesSubstraction
: this results in the opposite of Addition
Figure 1: An example configuration where Adjust uses the ValueWriting
type Addition
. The greatest magnitude is generated in the direction of the 4 agents at the top. The agent at the bottom still generates a small amount of interest in the opposite direction.
Hint: it is possible to separate the orientation and the movement direction by using an additional objective so that there is one objective for the movement direction and one objective for the orientation. However, the shipped character controllers (which are only suitable for debugging purposes anyway) do not support this feature yet. You have to implement such a controller yourself.