Ускорение Farseer с помощью Gravity? - PullRequest
0 голосов
/ 04 апреля 2011

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

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

Jeff

============================== Важный код =============== ==================

 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();

1 Ответ

0 голосов
/ 04 апреля 2011

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

Взято за FAQ:

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

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

Как преобразовать пиксели в метры?

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

...