Возникла проблема с box2d. Я хотел добавить к уже существующей игровой физике, но столкнулся с проблемами. Во-первых, мир игры я рисую с расчетомГравитация и неправильный размер
public Hero(float x, float y, int width, int height) {
this.width = width;
this.height = height;
position = new Vector2(x, y);
velocity = new Vector2(0, 0);
acceleration = new Vector2(0, -420);
}
public void update(float delta){
velocity.mulAdd(acceleration, delta);
if(velocity.y < -200){
velocity.y = -200;
}
position.mulAdd(velocity,delta);
}
public void onTap(){
velocity.y = 140;
}
тело героя падает от стандартной установки, но тело коробки, что я добавил к испытанию ведет себя очень странно.
Номер вопроса 1. Почему box2d поле больше, чем герой с этой настройкой, но когда я делю на два, он становится похожим на размер текстуры героя? Может быть связано с такими эффектами, чтобы тело было нарисовано на основе центра во всех направлениях. 2. Почему тело в мире с силой тяжести -420 непрерывно падает с одинаковой скоростью, но не так сильно, как мой герой. Как добиться подобного эффекта?
hero = new Hero(30, midPointY, 18, 21);
hero1 = new Box2Dhero(world, 90, midPointY, 18, 21);
Его Box2D герой конструктор
public Box2Dhero(World world, float x, float y, int width, int height) {
bodyDef = new BodyDef();
bodyDef.position.set(x,y);
bodyDef.type = BodyDef.BodyType.DynamicBody;
body = world.createBody(bodyDef);
box = new PolygonShape();
box.setAsBox(width,height);
fixtureDef = new FixtureDef();
fixtureDef.shape = box;
body.createFixture(fixtureDef);
}
Мой размер GameWorld
float screenWidth = Gdx.graphics.getWidth();
float screenHeight = Gdx.graphics.getHeight();
float gameHeight = 385;
float gameWidth = screenWidth/(screenHeight/gameHeight);
Рассмотрите возможность присвоения имен вашим подразделениям. Ускорение или гравитация 420 выглядит так, будто вы используете неправильные единицы. 420 что? – Xoppa