Ускорение Farseer с помощью гравитации?

Я новичок в библиотеке Farseer и пытаюсь создать приложение форм C# с помощью Farseer. Я создал форму, поместил пол на форму и опускаю один прямоугольник из верхней части формы в нижнюю. Кажется, что блок падает, НО он не ускоряется под действием силы тяжести. Я уверен, что это то, что я не устанавливаю, но для жизни я не могу понять это и надеялся, что кто-то может указать мне правильное направление.

Заранее спасибо за помощь,

Джефф

==============================Важно КОД================== ===============

 World world = new World(new Vector2(0.0f, 0.1f));

//Floor
Body floor = BodyFactory.CreateRectangle(world, 10000.0f, 30.0f, 100, new Vector2(0.0f, Height));
floor.BodyType = BodyType.Static;

// Block
 Body Block1 = BodyFactory.CreateRectangle(world, 100.0f, 10.0f, 100, new Vector2(Width/2, 0));
 Block1.BodyType = BodyType.Dynamic;

//(The step here is called when I timer goes off every .01/second)
 //Step the world a 10th of a second.
 world.Step((float).01f);



//(I draw the object this way)

 gr.TranslateTransform(body.Position.X, body.Position.Y);
 gr.RotateTransform((float)((body.Rotation *360)/(2*Math.PI)));
 gr.FillRectangle(SystemBrushes.ButtonFace, -size.Width / 2.0f, -size.Height / 2.0f, size.Width, size.Height);  
 gr.ResetTransform();

person Jeff Lundstrom    schedule 04.04.2011    source источник


Ответы (1)


Разобрался с этим! Проблема заключалась в том, что я использовал пиксели вместо метров, как только я понял, что теперь вы можете видеть, как гравитация действует на падающий блок. Извините за шум.

Взято для FAQ:

Какие единицы измерения использует Box2D?¶

Box2D настроен на метры-килограммы-секунды (МКС). Ваши движущиеся объекты должны находиться на расстоянии от 0,1 до 10 метров. Не используйте пиксели в качестве единиц измерения! Вы получите нервную симуляцию.

Как перевести пиксели в метры?

Предположим, у вас есть спрайт для персонажа размером 100x100 пикселей. Вы решаете использовать коэффициент масштабирования, равный 0,01. Это сделает поле физики персонажа размером 1 м x 1 м. Итак, сделайте физическую коробку размером 1x1. Теперь предположим, что персонаж начинается с координаты пикселя (345 679). Так что поместите поле физики в (3.45,6.79). Теперь смоделируйте физический мир. Предположим, поле физики персонажа перемещается в (2.31,4.98), поэтому переместите спрайт вашего персонажа в пиксельные координаты (231,498). Теперь единственная сложная часть — это выбор коэффициента масштабирования. Это действительно зависит от вашей игры. Вы должны постараться, чтобы ваши движущиеся объекты находились в диапазоне 0,1–10 метров, при этом 1 метр был оптимальным.

person Jeff Lundstrom    schedule 04.04.2011