Попытка реализовать метод для поворота объекта в единицу на основе вертикальной и горизонтальной оси, которая определяется положением курсора на изображении.
Создание 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 для вертикальной и горизонтальной ориентации объекта к углу.
В настоящее время используемые формулы не дают никаких углов.