• Create Account

#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