front-end / back-end: AIMSeek
| Seek
inherits from: AIMRadiusSteeringBehaviour
| RadiusSteeringBehaviour
front-end / back-end: AIMFlee
| Flee
inherits from: AIMRadiusSteeringBehaviour
| Seek
Note that the inspector of Flee is equivalent to the inspector of Seek.
Seek - a short word but a large amount of amazing possibilities (Flee is also pretty short). Both behaviours offer a wide range of applications and an enormous potential to be combined with other behaviours. While Seek generates magnitudes towards objects in range, Flee generates magnitudes in the opposite direction. Especially Seek will always be one of the most important behaviours because concerning context steering, it corresponds to _"just sample the world for surrounding objects (i.e. their centers)"_.
This component does not have any specific properties. It just has got the properties inherited from RadiusSteeringBehaviour
.
Flee is the counterpart to Seek. Hence, it just negates the ResultDirection
so that it moves away from the target instead of moving towards it.
Figure 1: The effects of Seek (left) and Flee (right).
As already mentioned above, Seek is a really versatile behaviour. It is very easy to configure such that an agent implicitly avoids obstacles without the need for active avoidance. Assuming that we have one danger objective to be minimized, Seek makes an agent avoid obstacles. When setting the TargetObjective
to this danger objective, the agent does not consider any directions which violate the constraint of this objective, and thus, avoids obstacles.
Another interesting thing is the combination of the ValueWriting
type Addition
and a normalized objective. Then, the resulting objective values represent clusters of relevant objects in range.