Я застрял с небольшой проблемой.
Я создал 3D-куб и настроил GoogleVR SDK, чтобы использовать триггер событий, когда средняя точка VR-экрана входит в куб. Когда это происходит, мой пользовательский метод LookAtCube()
срабатывает.
Я хочу, чтобы куб продолжал вращаться. Я могу вращаться с transform.Rotate-function
, но проблема в том, что он вращается только для 1 игрового тика (я думаю), потому что событие, на которое я запускаю, - это «Pointer Enter».
Мой вопрос:
Есть ли событие, которое вы можете вызвать, которое продолжает выполнять данный метод, находясь на расстоянии коллайдера? (например, если смотреть на куб, он должен вращаться, а если не смотреть, он не должен вращаться).
Я пытался исправить это с помощью time (true) -loop, но игра просто вылетает.
Например, на ПК / автономном приложении вы можете просто использовать закрытый метод OnMouseOver (). Я хотел бы этого, но затем с фокусом (средней точкой) экрана VR.
Это то, что я пробовал до сих пор (2 примера):
Первый пример: он просто немного вращается и останавливается (поэтому я предполагаю, что он вращается в течение 1 игрового такта с заданной скоростью).
using UnityEngine;
public class MoveCube : MonoBehaviour
{
float rotateSpeed = 0.5f;
// Use this for initialization
void Start()
{
}
public void LookAtCube()
{
transform.Rotate(new Vector3(rotateSpeed, rotateSpeed, rotateSpeed));
}
public void LookOutCube()
{
transform.Rotate(new Vector3(0, 0, 0));
}
}
Второй пример: Я использовал логическое значение, которое я установил в true / false соответственно при входе / выходе из куба. Затем цикл while должен продолжать вращаться, но игра вылетает (не вижу сообщения об ошибке, поскольку он полностью вылетает, но я предполагаю, что это переполнение).
using UnityEngine;
public class MoveCube : MonoBehaviour
{
float rotateSpeed = 0.5f;
Boolean hoverState = false;
// Use this for initialization
void Start()
{
}
public void LookAtCube()
{
while(hoverState == true){
transform.Rotate(new Vector3(rotateSpeed, rotateSpeed, rotateSpeed));
}
}
public void LookOutCube()
{
hoverState = false;
transform.Rotate(new Vector3(0, 0, 0));
}
}
Есть идеи, как правильно его реализовать? Заранее спасибо!