flame_steering_behaviors 0.2.1
flame_steering_behaviors: ^0.2.1 copied to clipboard
Flame Steering Behaviors brings steering algorithms to the behavior pattern, originally built by Very Good Ventures.
An implementation of steering behaviors for Flame Behaviors.
steering_behaviors #
An implementation of steering behaviors for Flame Behaviors. See Steering Behaviors For Autonomous Characters by Craig Reynolds for an in-depth explanation
Developed with 💙 and 🔥 by Very Good Ventures 🦄
Installation 💻 #
flutter pub add flame_steering_behaviors
Usage ✨ #
This package is built on top of the
flame_behaviors, if you are not
yet familiar with it, we recommend reading up on the documentation of that
package first.
Steerable #
If you want to apply steering behaviors to your entities you have to add the
Steerable mixin to your entity class:
class MyEntity extends Entity with Steerable {
/// Provide the max velocity this entity can hold.
double get maxVelocity => 100;
...
}
The Steerable mixin provides a velocity value to your entity, this
velocity will then be applied on each update cycle to your entity until the
velocity becomes zero.
Steering Behaviors #
Each algorithm defined by this project is available as a Behavior and you
can add them to your steerable entities as you would with any
behavior:
class MyEntity extends Entity with Steerable {
MyEntity()
: super(
behaviors: [
WanderBehavior(
circleDistance: 200,
maximumAngle: 45 * degrees2Radians,
startingAngle: 0,
),
],
);
...
}
Some steering behaviors require information that is not always available on
entity creation, when that happens we recommend using the entity's onLoad
method:
class MyEntity extends Entity with Steerable {
...
@override
Future<void> onLoad() async {
world.children.register<MyOtherEntity>();
await add(
SeparationBehavior(
world.children.query<MyOtherEntity>(),
maxDistance: 25,
maxAcceleration: 1000,
),
);
}
...
}