मैं नोड.जेएस v0.10.35 का उपयोग कर रहा हूं और डीबग मॉड्यूल स्थापित किया है ("एनपीएम इंस्टॉल डीबग" के साथ)। पीछा कर रहा है "नमस्ते LiquidFun" मैं इस काम करे, इसके liquidfun.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);
}
से अनुकूलित, Node.js पर चल रहा है के रूप में liquidfun.js परीक्षण के लिए किया (मैं 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 को परिवर्तनीय "दुनिया" को परिभाषित करने की आवश्यकता है (जो एक बी 2 वर्ल्ड ऑब्जेक्ट है), जबकि मेरे उदाहरण में, मैंने मॉड्यूल के बाहर "दुनिया" बनाया है और इसलिए इसे वापस पास किया जाना है इसे काम करने के लिए। वैकल्पिक रूप से, आप liquidfun.js मॉड्यूल के अंदर "दुनिया" बना सकते हैं और nodejs स्क्रिप्ट को निर्यात कर सकते हैं।
वैसे, अनुरूपित परिणामों को देखने के लिए पर्यावरण "DEBUG = liquidfun" सेट करने के लिए याद दिलाया जाए। विंडोज़ पर,
set DEBUG=liquidfun & node hello_liquidfun.js
चलाने के लिए निम्न टाइप करें