Як переконатись, що прядильні об’єкти потрапляють у ціль правою кінцею?


25

Я працюю над зброєю, яка кидає нож, куди грає вільний приціл, а потім кидає ніж. Ніж крутиться по повітрю і при зіткненні перестає крутитися, а самі батьки до предмета, з яким він зіткнувся. Спінінг обробляється за допомогою анімації, а шлях ножа - фізика.

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

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

Приклад: https://youtu.be/0fav8lFpBko?t=42s


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

1
Залежно від аромату гри, існує ряд стилів метання ножа, які не крутять лезо. Зазвичай вони використовують ножі, спеціально розроблені для літати стабільно.
Перкінс

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

2
Цей випуск є досить відомим, що про нього є стаття TVTropes: The Blade Always Lands Pointy End In
Mason Wheeler

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

Відповіді:


35

Прикидатися

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

Просто підробити. Як тільки відстань від ножа до цілі невелика, магічним стрибком виріжте на ніж в цілі.

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


Звитий прогноз

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

Це правильно. Це поза контролем гравця. Однак, не поза вашим контролем ...

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

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

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

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

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

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


Будь реалістичним

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


1
Ах, я не бачив стрибка, як розумний, але такий простий. Це дуже очевидно, коли я дивився це кадр за кадром, як ви запропонували.
FrontEnd

14

Якщо ви заздалегідь знаєте, куди приземлиться ніж - як у тих, хто вбиває кадри камери, які, безумовно, виробляються за фактом - просто обчисліть правильну швидкість обертання на основі відстані польоту та кількості бажаних обертів. Ножі, що кидаються, спочатку залишають кидок, тому потрібно обертати N + 0,5 повних обертів 1 , де N зазвичай принаймні 1, але це може бути більше на основі рівня майстерності метальника або наскільки класно ви хочете, щоб він виглядав: більше спинів = більш крутий.

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

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

1 : Є деякі стилі, коли нож також першим лежить.


4
+1: бризок крові. Гарні, магічні хитрощі. Редагувати: або хмара пилу для некрасивого видання.
Тераот

2
@Theraot та / або зробіть швидкість обертання досить швидкою, щоб глядач не міг реально відслідковувати, на який шлях вона спрямована.
Перкінс

14
  1. Обчисліть відстань по прямій до цілі.

  2. Кожен кадр встановлює кут ножа, який повинен бути 2PI * (залишивсяStraightLineDistance) / (originalStraightLineDistance) * DesiredNumRotations.

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

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


4

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

Колекція метальних ножів з Вікіпедії : Колекція метальних ножів із Вікіпедії

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

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

Ніж кидають, тримаючи кінчик леза і виводячи ручку в бік кидка.


2

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

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


1

Ідеальний метальник ножа?

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

Якщо б замість цього ви використовували параметр (відстань, що перемістився) / (загальна відстань до цілі), з відповідним масштабуванням на pi і (кількість витків + 0,5), то нож дійсно завжди магічним чином наближається до точки.


Перша частина цього питання, як видається, вимагає роз'яснень. Це, мабуть, має бути зроблено як коментар до цього питання. Не могли б ви детальніше розробити запропонований метод для магічного досягнення точки? Наприклад, ви говорите "з відповідним масштабуванням на pi"; яке масштабування? Справедливо припускати, що якщо користувач повинен запитати, він може не зрозуміти, що буде відповідним масштабуванням.
Gnemlock

@TimB зробив кращу роботу, щоб пояснити це, але запропоноване рішення Ніла - це хороший підхід. Змініть швидкість анімації прядильного ножа так, щоб, коли він досяг цілі, ніж опинився в положенні «точковий кінець переходить у іншу людину». Це набагато простіше (програмувати І обчислювати), ніж обчислювати параболічні траєкторії, що включають рухомі цілі тощо. Що стосується "відповідного масштабування за допомогою PI", що, швидше за все, було б 2, враховуючи, що число_of_revolutions є ще однією змінною в псевдоеквітації Ніла. Якщо це анімація ключових кадрів, то ви просто масштабуєте свій індекс і забуваєте про pi.
AC
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.