Получить угол от горизонтальной и вертикальной осей

Попытка реализовать метод поворота объекта в единстве на основе вертикальной и горизонтальной осей, который определяется положением курсора на изображении.

Создание 3D-игры для мобильных устройств с джойстиком для управления. Цель состоит в том, чтобы вращаться с помощью джойстика. Пример изображения: https://imgur.com/a/hd9QiVe Зеленый круг перемещается при нажатии пользователем и возвращается Значения X и Y от -1 до 1, где 0 находится посередине. Просто чтобы представить, как происходит ввод: https://imgur.com/a/8QVRrIh Как показано на изображении, мне просто нужен угол или способ перемещения объекта в направлении обнаружения пользовательского ввода.

Пробовал несколько методов расчета угла с помощью atan и tan, но мои математические расчеты довольно плохи, и я не совсем уверен, что в первую очередь получаю правильные значения.

//фоновый джойстик относится к белому кругу на первом изображении

        pos.x = (pos.x / backgroundJoystick.rectTransform.sizeDelta.x);
        pos.y = (pos.y / backgroundJoystick.rectTransform.sizeDelta.y);
        inputVector = new Vector3(pos.x * 2f, 0, pos.y * 2f);
        inputVector = (inputVector.magnitude > 1.0f) ? inputVector.normalized : inputVector;

// захват ввода по оси

public float Horizontal()
{
    if (inputVector.x != 0)
    {
        return inputVector.x;
    }
    else
        return Input.GetAxis("Horizontal");
}

public float Vertical()
{
    if (inputVector.z != 0)
    {
        return inputVector.z;
    }
    else
        return Input.GetAxis("Vertical");
}

Как показано в коде, угол необходим из input.getaxis для вертикали и горизонтали, чтобы направить объект под углом. Используемые в настоящее время формулы не дают никаких углов.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
1 339
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы хотите получить угол вектора, используйте Vector2.SignedAngle():

var inputAngle = Vector2.SignedAngle(Vector2.right, inputVector);

Углы относительны, поэтому вам нужно указать Vector2.right в качестве первого параметра. Также есть метод Vector2.Angle(), но он просто возвращает расстояние между двумя углами и не учитывает направление.

Если вам нужно убедиться, что ваши входные векторы — это то, что вы думаете, используйте Debug.Log(), чтобы напечатать inputVector.

Спасибо, этот фрагмент кода исправил мою проблему: var inputAngle = Vector2.SignedAngle(Vector2.right, pos); Одна вещь, которую я изменил, заключалась в том, чтобы использовать предыдущий Vector2, а не Vector3, чтобы получить свой угол, как было дано здесь: reddit.com/r/Unity2D/comments/7irplq/…

snake555510 10.04.2019 11:44

Другие вопросы по теме