Як я можу зробити зручну полярну координатну рух навколо кола?


23

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

Ці планети дуже малі (думаю, що ~ 350 пікселів в радіусі іноді), і їх видно збоку. Таким чином, ви можете легко бачити всю планету на екрані загалом.

Це може бути дещо заплутаним, ось ось малюнок: космічна гра

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

Будь-які ідеї, як зробити це більш зручним для користувачів?


21
Ви запитували користувачів, чи вважають вони це заплутаним? Я, звичайно, ні - ви натискаєте праворуч, щоб перемістити свого персонажа вправо і вліво, щоб перемістити свого персонажа вліво з точки зору вашого персонажа . Це набагато краще, ніж, скажімо, міняти кнопки посередині повороту (якщо ви планували це робити).
Шаранор

Відповіді:


38

Першою моєю пропозицією було б просто дотримуватися A = проти годинникової стрілки та D= руху за годинниковою стрілкою. Це не дуже заплутано і є майже «стандартним» (тобто найпоширенішим) вибором, коли мова йде про орбітальний рух, як це.

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

лише верхня половина планети

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

найкоротший напрямок для натискання

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


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

16

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


3
Це може стати дуже дезорієнтуючим, якщо ви не будете обережні.
Beefster

11

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

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


6
Якщо справа від кола, S повинен рухатися за годинниковою стрілкою.
користувач253751

1
Я не думав про це, тому що в ОП були згадані лише два клавіші, але це гарна ідея.
Джош

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

10

Я пропоную вам поглянути на подібне поняття, але тоді в 3d: галактика Супер Маріо.

скріншот супер-маріо галактики https://youtu.be/_8eJC4gIAm4?t=19m

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

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

Я припускаю, що Nintendo інвестував досить багато досліджень у те, щоб зробити гру максимально гладкою, і саме це вони вирішили. Мені завжди подобається придивлятися до того, що з'ясували більші компанії, сподіваючись, що вони вклали щось у НДДКР для максимального комфорту та грабельності.


7

Використовувати A/D для переміщення символу у напрямку до крайньої лівої / правої точки планети відповідно та W/S для переміщення персонажа у напрямку до верхньої / нижньої точки.

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

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

Додатково круговий W- A- S- Dабо W- D- S-A модель введення призводить до обходу планети, що здається досить інтуїтивно зрозумілим.

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


1
Це те, що я збирався запропонувати, зігравши в Super Mario Odyssey . Однак через зміну схем контролю спочатку було досить неінтуїтивно. Якщо це ваша основна схема управління, можливо, це не буде проблемою
Kaiged

3

Це одна з двох класичних проблем "розумової моделі", з якими стикається багато ігор.

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

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

Ваше запитання - точно та сама дилема; Проблема "ментальної моделі" тут полягає в тому, чи натискання праворуч на контрольну паличку означає "переміщення вправо персонажа" (як в Resident Evil), або "рухатися до правої частини екрана" (як у Маріо). Або в цьому випадку "рухатись за годинниковою стрілкою" (як у Tempest, коли використовується традиційна конверсія з керування веслом до джойстика).

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

  1. Як розробник ви вибираєте, яка модель найкраща для вашої гри, і використовуєте її. Ігноруйте скарги людей, які мають проблеми з обраною вами моделлю; їм просто доведеться адаптуватися. І якщо ваша гра буде досить переконливою, вони будуть.
  2. Реалізуйте обидві можливі моделі, і дозвольте гравцям вибрати, яку саме з них потрібно використовувати.
  3. Переконструюйте гру, щоб переконатися, що відображення елементів керування-> ігрових дій залишається однаковим, незалежно від того, яку ментальну модель хтось використовує.

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

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

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

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

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


1
Чи прокрутіть пальцем по сенсорній панелі мого ноутбука двома пальцями прокручування вгору чи прокрутіть вниз? Якби я був на мобільному пристрої, це було б вгору (бо мої пальці та сторінка 'пов’язані'), але той самий напрямок на миші був би вниз ... Я відчуваю це відключення кожного разу, коли використовую Mac ...
Draco18s

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

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

2

Використовуйте W / S / A / D для введення (або вгору / вниз / вліво / вправо). Розглядайте вхід як 8-ти напрямний (включаючи діагоналі).

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


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

2

Один варіант замість того, щоб визначити зв'язок між ключем і напрямком руху, мати:

  • одна клавіша для переміщення "вперед" (у поточному напрямку вибору)
  • одна клавіша "повернути" (напрямок перемикання)

Для цього персонаж повинен мати чітко видимий «напрямок».

Не впевнений, що насправді має набагато більше сенсу, ніж інші варіанти тут, але про всяк випадок….


1

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

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


1

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

Дайте персонажу помітні чіткі вказівки

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

Ніколи не дозволяйте героям перестати рухатися

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


0

До цього існує безліч підходів.

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

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

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

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