저는 GearVR 용 Unity에서 간단한 게임을 만들려고합니다. 게임에서는 사용자가 항목 목록을 탐색 할 수있는 장면이 있습니다. 사용자가 항목을 보면서 클릭하면 항목을 선택할 수 있습니다. 네비게이션 부분의 경우 사용자는 머리 움직임과 스 와이프를 사용하여 항목을 회전 할 수 있어야합니다 (오른쪽/왼쪽 스 와이프마다 1/1 씩 이동).Unity3D : Quaternion.Slerp();를 사용하는 방법을 모른다. 회전이 더 빨라졌습니다.
이제 문제는 : 아래의 코드 (항목의 부모에 구성 요소로 설정)로이 모든 작업을 수행 할 수 있지만 스 와이프를 많이 사용할수록 회전 수가 계속 증가합니다. 나는 이유를 이해하는 것 같지 않습니다 ... 여전히 그것에 대해 연구하고 있습니다.
도움의 모든 종류의 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;
}
}
내가 유니티 5.4.1f1 및 JDK 1.8.0를 사용하고 있습니다 감사합니다.
추신. 이것이 내 첫 번째 질문이기 때문에 나에게 열심히하지 마라. 그런데
는 ... 안녕하세요 모두 XD
이 코드는 너무 잘못되어 어디서부터 시작해야할지 모르겠습니다. 해결책을 찾았음에도 불구하고 여전히 잘못된 것입니다. 나는 'while (true)'루프를 가지고 있기 때문에'Rotate' 함수가 존재하지 않을 것이라고 생각합니다. 또한이 함수는 스 와이프가있을 때마다 호출됩니다. 어떤 시점에서 전체가 느려질 것입니다. 또한, 'Rotate' 함수에 0을 전달하면, 전체 앱이 멈 춥니 다. while 루프 안에 if 문 안에 있지 않은 while 루프 안에'yield return null; '을 넣으려면 ... – Programmer
고맙습니다. 그 점에 대해 당신이 맞다고 생각합니다. 그걸로 나는 많은 사람들이 많은 시도와 실수를 한 후에 여기에 게시했다. 솔루션이 아니라 해결책을 찾았습니다. 그리고 만약 당신이 기꺼이, 어떻게 그리고 어디서 잘못되었는지 설명해 주시면 감사하겠습니다. – remmargorp
수익률 반환 값이 null로 고정되었습니다. if() 문에서 벗어납니다. 고정 회전 (int v)을 회전합니다 (bool v).while을 제거하면 오브젝트가 Lerp의 대상이 아닌 프레임에만 회전합니다. 너 나 좀 도와 줄 수있어? – remmargorp