Я использую Node.js v0.10.35 и установил модуль отладки (с «npm install debug»). Ниже приводится «Hello LiquidFun» Я использовал, чтобы проверить на liquidfun.js как бег на Node.js, адаптировано из https://google.github.io/liquidfun/Programmers-Guide/html/md__chapter02__hello__box2_d.html
var lf=require('./liquidfun.js');
var debug=require('debug')('liquidfun');
var gravity = new lf.b2Vec2(0,-10);
var world = new lf.b2World(gravity);
lf.setWorld(world);
var groundBodyDef = new lf.b2BodyDef();
groundBodyDef.position.Set(0,-10);
var groundBody = world.CreateBody(groundBodyDef);
var groundBox = new lf.b2PolygonShape();
groundBox.SetAsBoxXY(50,10);
groundBody.CreateFixtureFromShape(groundBox,0);
var bodyDef = new lf.b2BodyDef();
bodyDef.type= lf.b2_dynamicBody;
bodyDef.position.Set(0,4);
var body=world.CreateBody(bodyDef);
var dynamicBox = new lf.b2PolygonShape;
dynamicBox.SetAsBoxXY(1,1);
fixtureDef = new lf.b2FixtureDef;
fixtureDef.shape = dynamicBox;
fixtureDef.density = 1;
fixtureDef.friction=0.3;
fixtureDef.restitution=0.5;
body.CreateFixtureFromDef(fixtureDef);
var timeStep=1/60;
var velocityIterations=6;
var positionIteration=2;
for (var i=0;i<60;i++)
{ world.Step(timeStep, velocityIterations, positionIteration);
var position = body.GetPosition();
var angle = body.GetAngle();
debug(position.x+" "+position.y+" "+angle);
}
Чтобы сделать эту работу, добавьте следующие строки в liquidfun.js (I Я использую v1.1.0), чтобы экспортировать все эти функции конструктора в вышеуказанной программу:
module.exports = {
b2Vec2: b2Vec2,
b2BodyDef: b2BodyDef,
b2PolygonShape: b2PolygonShape,
b2FixtureDef: b2FixtureDef,
b2World: b2World,
b2_dynamicBody: b2_dynamicBody,
setWorld: function(_world){ world=_world; }
};
Следует заметить, что я определил метод «setWorld (_world)», который используется для передачи мирового объекта из nodejs сценария назад в этот модуль. Причина в том, что я нашел, что liquidfun.js требует, чтобы переменная «мир» была определена (которая является объектом b2World), в то время как в моем примере я создал «мир» вне модуля и, следовательно, должен быть возвращен в чтобы он работал. Кроме того, вы можете создать «мир» внутри модуля liquidfun.js и экспортировать его в сценарий nodejs.
Кстати, напомним, чтобы установить среду «DEBUG = liquidfun», чтобы увидеть смоделированные результаты. В окнах введите следующие значения:
set DEBUG=liquidfun & node hello_liquidfun.js