UNPKG

babylon-steering

Version:
105 lines (71 loc) 2.99 kB
# BABYLON-STEERING ![](https://img.shields.io/badge/type-JS_Library-brightgreen.svg "Project type") ![](https://img.shields.io/github/repo-size/LorenzoCorbella74/babylon-steering "Repository size") ![](https://img.shields.io/github/package-json/v/LorenzoCorbella74/babylon-steering) ## What is A steering behaviors library for [Babylon.js](https://www.babylonjs.com/) for moving entities in the x/z plane. The library was born thanks to these [tutorials](https://gamedevelopment.tutsplus.com/series/understanding-steering-behaviors--gamedev-12732) and the library [three-steer](https://github.com/erosmarcon/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: ```javascript import babylon-steering from 'babylon-steering'; ``` Create a basic Babylon.js 3D scene with a mesh and simply instantiate a Steering Entity: ```javascript 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: ```javascript 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](https://alastaira.wordpress.com/2013/03/13/methods-for-combining-autonomous-steering-behaviours/): * `priority` for Priority Arbitration * `weighted` for Weighted Blending, * `probability` for 'Prioritised Dithering' * `truncated` for 'Weighted Prioritised Truncated Sum' ```javascript blueSphere.animate('blend'); // 'blend' 'priority' 'probability' 'truncated' ``` ## Examples To test some examples just: ```bash # 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](https://github.com/developit/microbundle), ## License This project is licensed under the ISC License.