Я работаю над 2D-игрой, где вы приземляетесь на планетах с кораблем и можете выйти из корабля и ходить вокруг.
Эти планеты очень малы (иногда, кажется, радиус ~ 350 пикселей) и видны сбоку. Таким образом, вы можете легко увидеть всю планету на экране в целом.
Это может сбивать с толку, так что вот картинка:
Я использую клавиши A и D для перемещения против часовой стрелки и по часовой стрелке, соответственно. Проблема в том, что если вы находитесь на «вершине» планеты (верхняя половина), это имеет смысл: A перемещается влево, D перемещается вправо. Однако, если вы находитесь на «дне» планеты (нижняя половина), A перемещается вправо, а D перемещается влево.
Любые идеи о том, как я могу сделать это более удобным для пользователя?
2d
movement
user-experience
MCMastery
источник
источник
Ответы:
Моим первым предложением было бы просто придерживаться A= против часовой стрелки и D= по часовой стрелке движения. Это не очень запутанно и в значительной степени является «стандартным» (то есть наиболее распространенным) выбором, когда речь идет о таком орбитальном движении.
Другой способ - изменить ход вашей игры. Вместо перемещения игрока, когда он находится на планете, вы можете вместо этого вращать планету. Это также очень распространенный выбор, но он может сбить с толку, если у вас есть несколько планет на экране, так как все, кроме игрока, должно будет вращаться. Если вы решите использовать этот метод, он может помочь отображать только часть планеты, чтобы уменьшить количество движущихся объектов, которые ваш глаз должен отслеживать:
Если вы свободны использовать мышь, вы всегда можете использовать щелчки мыши для перемещения. Нажатие на местоположение заставит игрока двигаться к этой точке, и он автоматически выберет самое короткое направление. Круги - это щелчки, а стрелки - самое короткое направление.
В качестве дополнительного бонуса также очень легко перейти на мобильные элементы управления, если вы хотите опубликовать свою игру в качестве приложения.
источник
Когда персонаж выходит из корабля, переориентируйте вид так, чтобы персонаж находился на вершине планеты, а затем передвигайте вид вместе с персонажем, пока он ходит. Таким образом, персонаж всегда находится на вершине по отношению к виду на планете, поэтому левый / правый элементы управления могут оставаться неизменными независимо от того, где вы приземлились.
источник
Один из подходов (часто используемый в играх от третьего лица с движением на палке, в котором также есть нестатические камеры) - установить систему отсчета для движения каждый раз, когда начинается ввод (в вашем случае, когда клавиша нажата), и сохранять этот кадр движения, пока ввод не завершится (клавиша отпущена). Это означает, что клавиша «A» будет всегда перемещать символ «влево», независимо от того, что было - по часовой стрелке, если оно находится внизу круга, против часовой стрелки в противном случае - до тех пор, пока клавиша не будет отпущена.
К сожалению, поскольку вы ограничены кругом, эта техника все равно развалится, когда персонаж находится в крайнем левом или правом экстентах круга или рядом с ним. Вы можете заставить его работать, просто выбирая произвольно, в каком направлении идти, но пользователь может смущаться. Возможно, еще более запутанно, чем просто придерживаться существующего подхода «А всегда против часовой стрелки», который вы используете сейчас.
источник
Я предлагаю вам взглянуть на похожую концепцию, но потом в 3D: Super Mario Galaxy.
https://youtu.be/_8eJC4gIAm4?t=19m
При коротких движениях система отсчета остается неизменной, вселенная не движется, выходя за определенный порог, по которому вселенная движется / сдвигается, поэтому система отсчета возвращается в середину.
Возможно, вы захотите «размыть движение» вселенной при движении, чтобы она выглядела более естественной, и глаза не могли сфокусироваться на смещающихся позициях движущихся частей.
Я предполагаю, что Nintendo приложила немало исследований, чтобы сделать игру максимально плавной, и на этом они остановились. Мне всегда нравится смотреть на то, что выяснили крупные компании, надеясь, что они вложили что-то в НИОКР для максимального комфорта и удобства игры.
источник
Используйте
A
/D
для перемещения персонажа в направлении к крайней левой / правой точке планеты, соответственно, иW
/S
для перемещения персонажа к самой верхней / самой нижней точке.Таким образом, игрок всегда перемещает персонажа в том же направлении, что и входное движение - например,
D
всегда движется вправо,S
всегда движется вниз, независимо от положения персонажа.Игра может либо двигаться в одном и том же направлении часов, пока нажата клавиша, либо останавливать персонажа в предельной точке. Если он останавливается, это не кажется большой проблемой - у игрока есть полный квадрант, в котором можно изменить вход, если он хочет продолжать движение в одном и том же направлении.
Кроме того, круглая
W
-A
-S
-D
илиW
-D
-S
-A
картина результатов ввода в кругосветных планетах, которая кажется довольно интуитивно.Удерживание более одной клавиши может привести к тому, что последняя нажатая клавиша будет иметь приоритет, или вы можете использовать более сложное поведение, например, наличие восьми ограничивающих точек.
источник
Это одна из двух классических «умственных моделей» проблем, с которыми сталкиваются многие игры.
Каждый игрок разрабатывает «ментальную модель» того, как игровое управление отображает игровые действия. С течением времени игры становятся все более похожими по своему контролю, люди начинают ожидать, что их устоявшаяся ментальная модель будет применяться к новым играм, а не разрабатывать отдельные модели для отдельных игр. Это было бы хорошо, за исключением того, что не у каждого игрока одинаковая ментальная модель того, как должны работать элементы управления.
Например, другая классическая проблема «ментальной модели» заключается в том, должно ли нажатие на джойстик (обычно правый аналоговый джойстик) означать « смотреть вверх» или « наклон вперед» (т.е. смотреть вниз ). Ни одна из моделей объективно не верна , но большинство игроков держат в голове только одно из этих двух возможных сопоставлений и будут отброшены, если игра сделает что-то отличное от того, чего они лично ожидали.
Ваш вопрос точно такая же дилемма; проблема «ментальной модели» заключается в том, означает ли нажатие вправо на ручку управления «двигаться вправо персонажа» (как в Resident Evil) или «двигаться в направлении правой стороны экрана» (как в Mario). Или в этом случае «двигаться по часовой стрелке» (как в Tempest, когда используется традиционное преобразование из весла в джойстик).
У каждого игрока будет встроенная модель, к которой он привык, которую он не хочет менять (или с трудом меняет). В любой такой проблеме «ментальной модели» у вас есть три варианта решения этой проблемы:
Вариант 3 («изменить дизайн игры, чтобы ментальные модели не конфликтовали друг с другом») в этом случае означал бы вращение камеры вместе с игроком, поэтому игрок всегда отображается в вертикальном положении на экране. Таким образом, «право означает движение по часовой стрелке», а «право означает движение к правой стороне экрана» всегда на одной линии; конфликта больше нет, и игроки не будут сбиты с толку в зависимости от их ментальной модели того, как контроль должен работать.
Вариант 2 будет означать реализацию обоих стилей управления; одна, где нажатие вправо ведет вас к правой стороне экрана, другая, где нажатие вправо ведет вас по часовой стрелке, и экран опций, где игрок может выбрать, какой стиль управления он хочет использовать.
Любой выбор здесь действителен; разные варианты просто требуют разного объема работы и накладывают разные ограничения на вашу игру. Если для вас действительно важно, чтобы игрок был видимым, перемещаясь по «нижней» стороне планеты, по тематическим или художественным причинам, то вы не захотите использовать вариант 3 и должны использовать 1 или 2. Если нет, тогда вариант 3, вероятно, является идеальным выбором.
источник
Используйте W / S / A / D для ввода (или вверх / вниз / влево / вправо). Относитесь к вводу как к 8 направлениям (включая диагонали).
Затем переместите проигрыватель в любом допустимом направлении (по часовой стрелке или против часовой стрелки) ближе всего к тому направлению, которое было нажато.
источник
Один из вариантов вместо определения связи между ключом и направлением движения:
Для этого персонаж должен иметь четко видимое «направление».
Не уверен, что это действительно имеет гораздо больше смысла, чем другие варианты, но на всякий случай ....
источник
Вниз, где гравитация. Поэтому, когда персонаж игрока находится на планете, вращайте камеру вместе с движением персонажа игрока, чтобы персонаж всегда находился на вершине планеты.
Но хотя это облегчает навигацию по планете, это может дезориентировать игрока относительно других небесных объектов. Это компромисс, который вы должны решить для себя.
источник
Если вы решите использовать движение по часовой стрелке / против часовой стрелки, вы можете сделать ряд вещей, чтобы сделать систему более понятной для ваших игроков.
Дайте персонажу видные различимые направления
Если персонаж наполовину синий и наполовину красный, игрокам легко запомнить ориентацию. Вместо того, чтобы определять «по часовой стрелке» или «против часовой стрелки», игроки либо двигаются в синем направлении, либо в красном. Если персонаж всегда смотрит в одном направлении (предпочтительно по часовой стрелке, так что движение наиболее интуитивно, а в вертикальном положении), то это даже лучше, потому что носители английского языка (и любой другой, говорящий слева направо) естественно склонны ассоциировать «право» с «вперед», усиливая связь между органами управления и направлением движения.
Никогда не позволяйте персонажам перестать двигаться
Пока вы двигаете своего персонажа, легко поддерживать ориентацию, в которой находятся ваши элементы управления. В конце концов, продолжение движения в направлении, в котором вы двигаетесь, вообще не предпринимает никаких действий, и когда вы хотите изменить свое движение. есть только один другой ключ на выбор. Только когда вы снова начинаете двигаться после остановки, перед вами стоит выбор. Чем дольше вы делаете паузу, тем труднее будет снова поднять трубку, основываясь на том, что вы делали раньше. Уменьшая частоту пауз и длительности пауз, вы можете не дать игрокам забыть, как двигаться.
источник
Есть несколько подходов к этому.
1) Как бы я подошел к этому, понадобятся участки планеты: верхняя, левая, правая и нижняя стороны (больше, если желательно). И сделайте так, чтобы после нажатия пользователем направления персонаж продолжал двигаться в этом направлении, пока не отпустит эту кнопку. Таким образом, если персонаж находится слева и пользователь нажимает клавишу вверх, персонаж будет двигаться по часовой стрелке до освобождения. Таким образом, вам не нужно беспокоиться об изменениях в системе координат во время движения персонажа, только после.
2) По-другому хотелось бы, как к нему подходят «Влюбленные в опасном пространстве-времени». С помощью джойстика вместо того, чтобы иметь систему координат, зависящую от поверхности, они имеют его таким образом, чтобы угол наклона джойстика был желаемым местом для «персонажа», на котором можно было остановиться. Таким образом, их система координат была в центре их "планеты". Я говорю персонаж и планета, но у них были модульные части корабля снаружи, где вы определяете, куда они идут, то есть, в каком направлении двигатели указывают на движение корабля.
3) Как у вас это разработано сейчас. Это тоже может немного освоиться, но игроки ничего не видели раньше. Вы можете отредактировать его так, чтобы планета вращалась, а игра всегда была «сверху».
источник