Які переваги, коли стіна є площиною або коробкою? Чи варто використовувати площину з коробним колайдером замість сітчастого коллайдера?
Які переваги, коли стіна є площиною або коробкою? Чи варто використовувати площину з коробним колайдером замість сітчастого коллайдера?
Відповіді:
Там буде кілька різних речей, які вам потрібно буде розглянути.
Зауважте: користь від оптимізацій, описаних нижче, дійсно має значення лише з тоною стін. У цей момент може бути розумним розглянути таке рішення, як розбиття бінарного простору (BSP) для створення ваших стін у грі. Це зробить ваші рівні вкрай оптимізованими для візуалізації (якщо правильно розроблені) та для фізики (оскільки у вас є дуже чітке визначення того, що стикається, а що ні.
Коробка піде більше, ніж на літак. У ньому більше вершин і трикутників, що означає, що ваша вершинна шейдер, і растерізатор повинен буде працювати над більшою кількістю даних. Тому використовуйте поле лише тоді, коли вам потрібно з точки зору видимості. При необхідності видаліть обличчя для того, що гравцеві потрібно буде бачити.
Ви завжди повинні використовувати BoxCollider
проти, ніж MeshCollider
коли можете. MeshCollider
Ви повинні застосувати зіткнення на обличчя (або як опуклий корпус) сітки та зробити радіомовлення та фізику повільнішими (але це незначна кількість лише для одного ящика). Інша річ у BoxColliders
тому, що гравцеві набагато важче поетапно переходити їх, коли вони йдуть дуже швидко. Навіть при безперервних зіткненнях, якщо ви все ще відчуваєте, що все відбувається через стіни, ви завжди можете просто розширитиBoxColliders
Якщо ви набагато швидше працюєте з літаками MeshColliders
(оскільки вам не потрібно налаштовувати всі, BoxColliders
щоб відповідати їх розмірам), можливо, буде просто використовувати ті, якщо ви отримаєте бажану продуктивність.
Розгортаючи трохи на точки "Coburn" :
Візуалізація : Якщо ви зображуєте стіну лише площиною, то стіна буде видна лише з одного боку, оскільки площина (а точніше її грані) має лише одну виведену сторону. Тож якщо гравець зможе пересуватися по стіні, вам знадобиться кілька площин, щоб покрити всі сторони, а це означає, що ви все одно отримаєте коробку.
Фізика : Прості геометрійні колайдери (сфери, ящики тощо) завжди швидше обчислити порівняно з повними сітчастими конлайнерами, оскільки не всі грані сітки повинні перевірятися індивідуально. Натомість можуть використовуватися «прості» радіопередачі або обчислення відстані (наприклад, відстань до центру сфери мінус розмір сфери).
Для інших фізичних двигунів, які мають окремий "площинний колайдер" (що Unity), немає "кращого". Літак може бути дещо швидшим, але ви можете зіткнутися з проблемою швидких об'єктів, що проходять через нього, фактично не стикаючись. Тоді вам залишається або мати більш товсті колайдери (тому поле замість літака), або переходите до виявлення безперервного зіткнення (CCD), як пояснено тут .
Ще одна річ щодо візуалізації: Коли у вас є власна реалізація тіньового картографування, стіни, виготовлені з ящиків, можуть перевершувати стіни, виконані з площин, завдяки петернінгу, який може з’являтися з літаками.
Ось пояснення симптому:
http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-16-shadow-mapping/#peter-panning
Мені завжди говорили, що якщо у вас будуть тіні, то найкраще зробити це твердим, щоб допомогти при легкій кровотечі, оскільки різниця в глибині невелика, і вона кровоточить.
Я можу помилятися, але всі мої стіни та інше я роблю так, як це двостороння, стіна буде лише декількома вертиками, тому це не повинно економити великою площею.
Є деякі речі, від яких я залишаю сторони, але в основному це нижня або верхня частина речі, яка має багато речей, щоб допомогти при легкій кровотечі.
Я роблю те ж саме з фізикою, чи не кожен думав про це, але мені здалося правильним використовувати стіну як стіну, а площину як площину, але це тільки я