Я пытаюсь сделать простую игру в Unity для GearVR. В игре у меня есть сцена, где пользователь может перемещаться по списку предметов. Элемент может быть выбран, если пользователь нажимает на него. Для навигационной части пользователь должен иметь возможность использовать как движение головы, так и салфетки, чтобы вращать предметы (сдвигаясь на один/минус один при каждом щелчке правой/левой руки).Unity3D: не знаю, как использовать Quaternion.Slerp(); вращение становится быстрее
Теперь проблема: я могу сделать всю эту работу с приведенным ниже кодом (установленным как компонент для родительского элемента), но вращение продолжает увеличиваться, тем больше я использую swipes. Я не могу понять, почему ... все еще работаю над этим.
Любой вид помощи оценен XD
private void ManageSwipe(VRInput.SwipeDirection sw)
{
from = transform.rotation;
if (sw == VRInput.SwipeDirection.LEFT)
{
to = Quaternion.Euler(new Vector3(0, from.eulerAngles.y + 30, 0));
}
if (sw == VRInput.SwipeDirection.RIGHT)
{
to = Quaternion.Euler(new Vector3(0, from.eulerAngles.y - 30, 0));
}
StartCoroutine(Rotate());
}
IEnumerator Rotate(bool v)
{
while (true)
{
transform.rotation = Quaternion.Slerp(from, to, Time.deltaTime);
yield return null;
}
}
Я использую Unity 5.4.1f1 и JDK 1.8.0.
PS. Не будьте тверды на меня, так как это мой первый вопрос.
Кстати ... Привет всем XD
Этот код настолько ошибочен, что я даже не знаю с чего начать. Несмотря на то, что вы нашли решение, оно все еще не так. Я не думаю, что ваша функция 'Rotate' будет когда-либо существовать, потому что она имеет' while (true) 'loop. Кроме того, эта функция вызывается каждый раз, когда происходит прокрутка. В какой-то момент все будет медленно. Кроме того, если вы когда-либо проходите 0 до функции «Поворот», все ваше приложение замерзнет. Чтобы исправить это, поставим 'yield return null;' внутри цикла while не внутри оператора if в цикле while ... – Programmer
Спасибо за исправление. Я думаю, вы правы в этом вопросе. Сказав это, я, как и многие другие, отправляю сюда после многих попыток и ошибок. Я нашел решение, а не решение. И я был бы вам признателен, если вы захотите, как и где это неправильно. – remmargorp
Исправлено выходное значение null; из инструкции if(). Фиксированный поворот (int v) для поворота (bool v).Если удалить true, объекты будут вращаться только для фрейма, а не для адресата Lerp. Вы можете мне помочь? – remmargorp