Як визначити, чи не впав персонаж у розрив у нескінченному бігуні / перемичці?


12

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


OT: Я хоч це запитання було розміщено на rpg.SE, і я подумав: "Який тип експлуатування правил знайдено зараз? Нескінченний запуск як?"
o0 '.

Відповіді:


20

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


1
І зробити цей прямокутник дочірньою камерою, щоб він рухався камерою і завжди був присутній? Це так просто. Дякую.
SanSolo

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

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

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

6
Щоб уникнути «обрізання» прямокутника, чому б не просте if (playerPos.x < minHeight)?
Коул Джонсон

24

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

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

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


Так, це теж простий шлях. Мені просто потрібно з’ясувати найнижчу позицію.я яким може бути персонаж.
SanSolo

1
Правильно! у випадку горизонтального скролера ви можете просто перевірити вертикальний розмір сцени у своєму редакторі карт. У разі вертикального прокрутки ви можете переконатися, що камера рухається лише вгору. Таким чином, якщо персонаж впаде вниз, він опиниться внизу виду камери. Потім можна просто перевірити, чи вертикальне положення персонажа опускається нижче нижньої межі подання.
Jelle van Campen

@JellevanCampen: Вам не потрібно обмежувати камеру рухом вгору обов'язково. Ви можете вбити персонажів, які не залишаються «в камері», або змусити камеру слідувати за ними.
Mooing Duck

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

2
@Kevin: Я погоджуюся на загальні ігри, але не на процедурно створені нескінченні скроллери. Наприклад, у вертикальних прокрутках вам доведеться або продовжувати нерестувати нові коробки та відкинуті екранні екрани, або вам доведеться постійно оновлювати вікна, коли камера рухається. Оскільки стан смерті безпосередньо пов'язаний з "невдачею залишитися в камері", має сенс прив'язати стан до камери. Крім того, більш ефективно робити перевірку меж камери, а не робити нерестові нові об'єкти і вдаватися до перевірки зіткнення.
Джелль ван Кампен

2

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

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


1

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

Приклад: У нас є 3 стовпи з висотами [10, 20, 40]. Гравець стрибнув на стовпі з висотою 40, він стрибає вперед до 20. Він відчував себе в розриві між 40 і 20, зараз він на висоті 15. Це означає, що він відчував себе. Для менш суворої перевірки зачекайте, поки він не нижче 10.


Всі стовпи однакового розміру. Це горизонтальний зазор між двома стовпами, який змінюється :)
SanSolo

0

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

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