/ / Справедливий 2d арбітраж руху зіткнення руху - 2d, виявлення зіткнення

Справедливий 2-дюймовий рух зіткнення арбітражу - 2D, виявлення зіткнень

Я намагаюся створити "справедливе" виявлення зіткненнясистема для 2d спрайтової гри, але мені здається, що це складніше, ніж я спочатку очікував. Під "справедливим" я маю на увазі, що жодному рухомому об'єкту не надається пріоритет руху над іншим в одному оновленні гри:

наприклад A -> 50px <- B (якщо b і a мають однакові швидкості, кожен з них повинен рухатись 25 пікс. Перед зіткненням і зупинкою)

На відміну від жадібних алгоритмів, які можуть просто рухатись спочатку A, а потім скасовувати рух B, оскільки A вже є.

2 випадки вирішуються досить просто, але у мене виникають проблеми, коли у мене стикаються кілька об'єктів.

напр. (показані лише швидкості).

     B
|
|<--C
A--> v

Де об'єкти A, B і C можуть бути різного розміру

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

Відповіді:

1 для відповіді № 1

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