Гравець рухається вгору, стрибає чи піднімається?


11

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

І взагалі, очевидно, що вектор напряму не повинен визначати анімацію для відтворення: як ви також визначаєте причину руху (щоб ви знали правильний спрайт, який потрібно використовувати)?


1
Якщо гравець стоїть на сходах, він справді знаходиться в повітрі?
Дерек

Відповіді:


15

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

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

Причина, чому це стосується так виключно, полягає в тому, що ви дивитесь на це як "Тепер, коли я в повітрі, як я зрозумію, чи я на драбині чи стрибаю?" ... Коли ви дійсно повинні подумайте: "Я збираюся піднятися в повітря, але яким методом ПЕРШИЙ, щоб я міг це використовувати для використання анімації".


Наприклад, просто: OnJump()поміняйте jumpingбулеве значення на справжнє, а потім, якщо ви знаходитесь у повітрі і jumpingнеправдиво, то ви або падаєте, або на драбині тощо.
Джошуа Хеджес

6

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


2

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

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


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

1

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

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