Як зробити персонажа, здатного ходити по стінах?


34

Я намагаюся змусити персонажа рухатись, як павук: Враховуючи зростаючий нахил, куля, як правило, не зможе скотитися, павук повільно повзе вгору.

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

Я розглядав різні компоненти 2D Unity з невеликим успіхом. :(

Більшість меж зіткнення в моєму світі позначені компонентами 2D Collider (які чудово спрацьовують із простою кулею, ураженою силою тяжіння, але в меншій мірі з цим характером павука).


1
Ця гра: youtube.com/watch?v=ga4Zqq1tXa8 ("Павук" на PS1, я давно грав у неї) може стати джерелом натхнення.
тигру

Відповіді:


43

Я збирався опублікувати посилання на блог бази астероїдів про ворога Уокера, коли помітив у коментарі кармінгтон, який вже пов'язаний зі статтею Гамасутри .

Напевно, варто надати цьому трохи більше наочності та пояснень як відповідь сама по собі.

Я йду по промінчику, о-о!

Хитрість - це радіопередачі . Вони дозволяють вашому коду відсканувати вздовж лінії на предмет зіткнення.

Щоб Уокер добре вирівнявся до поверхонь, вони вистрілюють два промені вниз на місцевість, один з лівої сторони Уокера та один з правого боку (червона та жовта лінія вгорі).

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

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

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

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

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

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


Я можу підтвердити, що 2D-радіопередачі виявлять колайдери, які містять початкову точку. Це легко відфільтрувати, однак, оскільки це перше виявлення завжди повертається з відстані 0 і нормальною протилежністю напрямку радіації.
XenoRo

2

Для цього вам знадобиться спеціальний код.

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

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


2
Ось справді приємне посилання, не впевнений, чи точно він підходить до вашої справи, але, можливо, може бути ... gamasutra.com/blogs/AdamWinkels/20140220/211306/…
karmington
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.