Unity2D: Использование левой аналоговой ручки для навигации по 2D-пространству - PullRequest
0 голосов
/ 12 марта 2020

Я новичок в Unity и пытаюсь сделать что-то довольно простое. Однако я не знаю с чего начать. У меня есть несколько «узлов» в сцене, которые игрок сможет выбрать. Затем они смогут соединить два узла. Мне удалось найти все узлы в диапазоне 40 с позиции игрока и поместить их в массив. Следующим шагом будет «навигация» по узлам. Я хочу, чтобы плеер использовал левую аналоговую палку для этого, но я не знаю, как это сделать go. Когда они держат ручку под углом 120 °, узел, ближайший к этому положению, можно будет выбрать, нажав другую кнопку. Я посмотрел на некоторые скрипты пользовательского интерфейса, но эта ситуация довольно отличается, так как это двухмерное пространство. У кого-нибудь есть предложения как go об этом? Спасибо.

скриншот

1 Ответ

0 голосов
/ 12 марта 2020

Для меня это звучит так, как будто вам придется выполнить тригонометрию, чтобы найти ближайший «узел». Каждый из них - по крайней мере, если вы хорошо программируете - должен быть объектом, чьи переменные местоположения x и y могут быть доступны из вашего скрипта.

Вы можете перебрать список собранных объектов и сравнить их к вашему текущему местоположению и сохраните объект во временной переменной, если это расстояние меньше, чем последний объект в массиве.

Вот некоторый псевдокод, который должен помочь проиллюстрировать мою точку зрения:

for item in array {

    Object closestKnotDist = Null

    Float currentKnotDist = math.sqrt((player.x-item.x)**2 + (player.y-item.y)**2)

    if currentKnotDist < closestKnotDist {
        closestKnotDist = currentKnotDist
    }

}

Таким образом, closestKnotDist будет ближайшим объектом к игроку. Управляй им как хочешь.

Не уверен, что это ответило на твой вопрос, но не стесняйся добавить еще объяснение, если нет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...