Я пытаюсь сделать простую игру в Unity для GearVR. В игре у меня есть сцена, где пользователь может перемещаться по списку элементов. Элемент может быть выбран, если пользователь щелкает, глядя на него. Что касается навигационной части, пользователь должен иметь возможность использовать как движение головы, так и смахивание для поворота элементов (сдвиг на единицу/минус один при каждом свайпе вправо/влево).
Теперь проблема: я могу заставить все это работать с кодом ниже (установленным как компонент родительского элемента), но вращение продолжает увеличиваться, чем больше я использую свайпы. Я не могу понять, почему ... все еще работаю над этим.
Любая помощь приветствуется 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)
. Кроме того, эта функция вызывается каждый раз при свайпе. В какой-то момент все это будет медленно. Кроме того, если вы когда-нибудь передадите 0 функцииRotate
, все ваше приложение зависнет. Чтобы исправить это, поместитеyield return null;
внутри цикла while, а не внутри оператора if в цикле while... - person Programmer   schedule 25.11.2016from
иto
?Vector3
,Transform
илиQuaternion
? - person Programmer   schedule 25.11.2016bool v
? - person Programmer   schedule 25.11.2016