• Create Account

Interested in a FREE copy of HTML5 game maker Construct 2?

We'll be giving away three Personal Edition licences in next Tuesday's GDNet Direct email newsletter!

We're also offering banner ads on our site from just \$5! 1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.

### #Actuallevela

Posted 27 April 2013 - 04:39 PM

Hiho!

I am a game designer student who started working with box2d and Libgdx recently. My game idea relies on Box2D heavily, so I spent about a week learning Box2dWeb (which is the JavaScript port of Box2d), and learned hopefully most of the things that I am going to need

in the development process. You can see the end result here

When I got done with this, I took a dive into libgdx. Read a lot of tutorials and documentation, and managed to get most of the things already working, but I am stuck with the pixel to meter (and vica-versa) scaling system, therefore I can't get it working on my Android device.

Using Box2dWeb I could solve the scaling problem by setting up a scale variable, and dividing and multiplying with it. According to the web, 30pixel should be equivalent 1 meter, so I did the following:

SCALE = 30;

...

var bodyDef			= new box2d.b2BodyDef();
bodyDef.type		= box2d.b2Body.b2_staticBody;
bodyDef.position.x	        = 400 / SCALE;
bodyDef.position.y	        = 600 / SCALE;
bodyDef.userData            = 'Ground';


var fixDef  = new box2d.b2FixtureDef();

fixDef.shape  = new box2d.b2CircleShape(50 / SCALE);

And the ground was in pixel-perfect position, and when attached a bitmap to the ball, it matched as well! In Java, it is different..

I have followed a tutorial which made me set up an ortographic camera with a viewport of 48*32 meters, then positioned it in the center. I have tried the same method that I  used with Box2dWeb, but it didn't work.

I want my game to be playable on Android phones and PC as well, so I do not know how I should solve this problem (or how I should configure / resize the viewport) for different screen sizes, or just a simple screen size.

Ps.: Sorry for the half-finished post, clicked the wrong button as it seems.

### #1levela

Posted 27 April 2013 - 07:58 AM

Hiho!

I am a game designer student who started working with box2d and Libgdx recently. My game idea relies on Box2D heavily, so I spent about a week learning Box2dWeb (which is the JavaScript port of Box2d), and learned hopefully most of the things that I am going to need

in the development process. You can see the end result here

When I got done with this, I took a dive into libgdx. Read a lot of tutorials and documentation, and managed to get most of the things already working, but I am stuck with the pixel to meter (and vica-versa) scaling system, therefore I can't get it working on my Android device.

Using Box2dWeb I could solve the scaling problem by setting up a scale variable, and dividing and multiplying with it. According to the web, 30pixel should be equivalent 1 meter, so I did the following:

SCALE = 30;

...

var bodyDef			= new box2d.b2BodyDef();
bodyDef.type		= box2d.b2Body.b2_staticBody;
bodyDef.position.x	        = 400 / SCALE;
bodyDef.position.y	        = 600 / SCALE;
bodyDef.userData            = 'Ground';


var fixDef = new box2d.b2FixtureDef();
fixDef.density = 5;
fixDef.friction = 0.5;
fixDef.restitution = 0.9;

fixDef.shape = new box2d.b2CircleShape(50 / SCALE);

And after assigning a bitmap to it, it matched the shape of the box!

PARTNERS