BABYLON-STEERING
What is
A steering behaviors library for Babylon.js for moving entities in the x/z plane. The library was born thanks to these tutorials and the library three-steer.
The following behavious are supported:
- Seek, Seek with Arrive and Attract (Seek with intensity)
- Flee
- Arrive
- Pursue
- Evade
- Interpose
- Wander
- Collision Avoidance
- Follow Path
- Follow Leader
- Queue
- Cohesion, separation and alignment (Flocking)
- Hide
- Apply general force
Steering Entities can:
- look at a specific target with the .lookAt() method
- look where they are going with the .lookWhereGoing() method
How to setup
Include babylon-steering
library:
import babylon-steering from 'babylon-steering';
Create a basic Babylon.js 3D scene with a mesh and simply instantiate a Steering Entity:
const redSphere = new SteeringVehicle(my_mesh, engine, option);
Add the behavior/s to the steering entity and the update method inside main render/animation loop:
scene.executeWhenReady(function () {
engine.runRenderLoop(function () {
my_mesh
.seekWithArrive(greenTarget, 50)
.hasInConeOfView(arrayOfEnemies)
.avoid(obstacleIstances)
.applyForce(new BABYLON.Vector3(1, 0, 0.75)) // For istance can be WIND...
.lookWhereGoing(true);
my_mesh.animate(); // Update the Steering Vehicle
scene.render();
});
});
Combine behaviours
It is possible to combine many simultaneous steering forces by passing the following parameters to the .animate()
function according to the four methods described in this bog post:
-
priority
for Priority Arbitration -
weighted
for Weighted Blending, -
probability
for 'Prioritised Dithering' -
truncated
for 'Weighted Prioritised Truncated Sum'
blueSphere.animate('blend'); // 'blend' 'priority' 'probability' 'truncated'
Examples
To test some examples just:
# 1)istall dependencies
npm install
# 2)run development server serving static demo pages at localhost:4000
npm start
Bugs
- Uhm...let me know!
Built With
ES6 Javascript, microbundle,
License
This project is licensed under the ISC License.