Чи слід створювати стіну як площину чи як ящик?


22

Які переваги, коли стіна є площиною або коробкою? Чи варто використовувати площину з коробним колайдером замість сітчастого коллайдера?

Відповіді:


15

Там буде кілька різних речей, які вам потрібно буде розглянути.

Зауважте: користь від оптимізацій, описаних нижче, дійсно має значення лише з тоною стін. У цей момент може бути розумним розглянути таке рішення, як розбиття бінарного простору (BSP) для створення ваших стін у грі. Це зробить ваші рівні вкрай оптимізованими для візуалізації (якщо правильно розроблені) та для фізики (оскільки у вас є дуже чітке визначення того, що стикається, а що ні.

Візуалізація

Коробка піде більше, ніж на літак. У ньому більше вершин і трикутників, що означає, що ваша вершинна шейдер, і растерізатор повинен буде працювати над більшою кількістю даних. Тому використовуйте поле лише тоді, коли вам потрібно з точки зору видимості. При необхідності видаліть обличчя для того, що гравцеві потрібно буде бачити.

Фізика

Ви завжди повинні використовувати BoxColliderпроти, ніж MeshColliderколи можете. MeshColliderВи повинні застосувати зіткнення на обличчя (або як опуклий корпус) сітки та зробити радіомовлення та фізику повільнішими (але це незначна кількість лише для одного ящика). Інша річ у BoxCollidersтому, що гравцеві набагато важче поетапно переходити їх, коли вони йдуть дуже швидко. Навіть при безперервних зіткненнях, якщо ви все ще відчуваєте, що все відбувається через стіни, ви завжди можете просто розширитиBoxColliders

Продуктивність

Якщо ви набагато швидше працюєте з літаками MeshColliders(оскільки вам не потрібно налаштовувати всі, BoxCollidersщоб відповідати їх розмірам), можливо, буде просто використовувати ті, якщо ви отримаєте бажану продуктивність.


10

Розгортаючи трохи на точки "Coburn" :

Візуалізація : Якщо ви зображуєте стіну лише площиною, то стіна буде видна лише з одного боку, оскільки площина (а точніше її грані) має лише одну виведену сторону. Тож якщо гравець зможе пересуватися по стіні, вам знадобиться кілька площин, щоб покрити всі сторони, а це означає, що ви все одно отримаєте коробку.

Фізика : Прості геометрійні колайдери (сфери, ящики тощо) завжди швидше обчислити порівняно з повними сітчастими конлайнерами, оскільки не всі грані сітки повинні перевірятися індивідуально. Натомість можуть використовуватися «прості» радіопередачі або обчислення відстані (наприклад, відстань до центру сфери мінус розмір сфери).

Для інших фізичних двигунів, які мають окремий "площинний колайдер" (що Unity), немає "кращого". Літак може бути дещо швидшим, але ви можете зіткнутися з проблемою швидких об'єктів, що проходять через нього, фактично не стикаючись. Тоді вам залишається або мати більш товсті колайдери (тому поле замість літака), або переходите до виявлення безперервного зіткнення (CCD), як пояснено тут .


Ви можете майже завжди вимикати задню поверхню.
Балінт

2
@ Bálint True. Потім користувач може побачити стіну і з іншого боку, хоча при неправильному освітленні в такому випадку (світло, що надсилається джерелами з іншої сторони / кімнати, замість того, у якому він / вона стоїть).
Філіп Аллгайер

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

@Bakuriu Наскільки я знаю, у Unity немає "площинного колайдера", тому "коробка" - найближча річ. Я додав замітку для інших двигунів фізики.
Філіп Аллгайер

4

Ще одна річ щодо візуалізації: Коли у вас є власна реалізація тіньового картографування, стіни, виготовлені з ящиків, можуть перевершувати стіни, виконані з площин, завдяки петернінгу, який може з’являтися з літаками.

Ось пояснення симптому:

http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-16-shadow-mapping/#peter-panning


Що таке пітер-панінг?
Пічі Вуана

Ви перейшли за посиланням, яке я надав? повинні бути роз'яснювальними.
Djindjidj

0

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

Я можу помилятися, але всі мої стіни та інше я роблю так, як це двостороння, стіна буде лише декількома вертиками, тому це не повинно економити великою площею.

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

Я роблю те ж саме з фізикою, чи не кожен думав про це, але мені здалося правильним використовувати стіну як стіну, а площину як площину, але це тільки я

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