Плитка фізика за допомогою Farseer


9

У мене виникають проблеми з двигуном фізики Farseer, де в плитковому середовищі мій об'єкт часом взаємодіє з кутами інших об'єктів, навіть якщо вони ідеально вирівнюються.

Плитка фізика за допомогою Farseer

Я читав про людей, які пропонують обчислити та створити один більший об’єкт, використовуючи «Маршируючі квадрати» чи щось подібне. Однак це не варіант, оскільки я хотів би, щоб кожна плитка мала різні фізичні якості, наприклад, різне тертя та реституція.

Моє запитання полягає в тому, що саме це викликає, чи це плаваючі питання щодо точності чи щось інше? І чи є спосіб це виправити, не порушуючи весь двигун фізики?


Цікаво, чи можна було просто розширити поля зіткнення на один піксель, щоб вони трохи перекривались. Можливо, вона може бачити поверхню як більш зв'язану.
Doug.McFarlane

@Doug: Я просто тестував це, і це не мало значення.
Вільям Маріагер

Чи є основи плитки статичними тілами?
bummzack

@bummzack: Так вони є.
Вільям Маріагер

У мене виникає точно таке саме питання. Я отримую ефект "підстрибування", коли мій рухомий предмет - прямокутник або коло. Я також не можу перетворити кілька квадратів у один великий прямокутник, тому що я хочу, щоб у певних ситуаціях програвач мав можливість "видаляти" окремі плитки.

Відповіді:


5

Farseer використовує ітераційний вирішувач, тому коли ваше колесо починає стикатися з іншим прямокутником з великою швидкістю, час від часу ви побачите удари, оскільки це "ідеальне вирівнювання" для нас, а не фізичне моделювання, з ітераціями, такими як ці ніколи не бути "піксельним ідеальним".

Вам доведеться конвертувати прямокутники у форми Edge / Loop, а потім моделювати різні фізичні якості за допомогою хак, таких як створення штучних меж плитки, а потім зміна властивостей, коли персонаж потрапляє у обмежувальний ящик, але не будь-яка фізична якість може бути імітована таким чином.

Рано чи пізно ви закінчите писати власну фізику на основі плиток замість Farseer. Якщо у вашій грі не так багато складних фізичних головоломок, буде простіше повністю відмовитись від Farseer і розгорнути власну фізику на основі плиток.


Я фактично почав кодувати власний двигун фізики, спеціально для цього мотоблока, оскільки, схоже, немає елегантних рішень.
Вільям Маріагер

Я вирішив відзначити цю відповідь, оскільки, здається, немає простого рішення, і вам краще буде кодувати власне рішення. Або прийміть, що ви не можете займатися різною фізикою, і використовуйте Маршеві квадрати для створення більших тіл.
Вільям Маріагер

0

ви можете оптимізувати фігури зіткнення, цю сцену можна виконати лише з чотирьох прямокутників.

ви можете приєднати відповідні поля, щоб зробити один більшим.

це відео показує це http://www.youtube.com/watch?v=eyhGckHgkkE

під час додавання коробок видно світло-синій прямокутник з оптимізованою формою.


1
Як я вже говорив у третьому пункті, перетворення групи об'єктів у більший об'єкт - це не варіант, оскільки я втратив окремі властивості.
Вільям Маріагер

Ви також можете згрупувати їх за їхніми фізичними властивостями. Я думаю, що не дуже звичайно мати багато різних фізичних блоків разом.
Бла

Згрупування їх за фізичними якостями поставило б мені ту ж проблему, якщо місцевість сильно зміниться на розтяжці. Це може бути незвично, але, тим не менш, це те, що мені потрібно.
Вільям Маріагер

0

Хм ... підозрюю, це може мати щось спільне з вашим колом, а не плитками під ним. Спробуйте зробити грунт за допомогою одного корпусу і подивіться, чи отримаєте ви однакові результати. Якщо ні, то це плитки, як ви підозрюєте. Якщо так, то ваше коло не таке кругле, як ви могли подумати.


Я це тестував. При використанні одного великого прямокутника проблем немає.
Вільям Маріагер,

k, Плитки - це питання тоді
Джон Макдональд,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.