Вам вообще не нужно использовать указатель для этого события, но вместо этого просто используйте raycast.Преимущество такого подхода заключается в том, что вы также можете использовать его в сочетании с масками слоев, тегами или всем, что вы хотите использовать для идентификации группы объектов, и вам не нужно запускать pointerevent для каждого объекта, который вы хотите.ваш взгляд, чтобы работать с.Но вместо этого просто нужен один скрипт на вашем VRhead или raycaster.
В моем примере я буду использовать маску слоя.Это заставит взгляд работать на любом объекте в том же слое, как "uiButton"
public sceneIndex = 0; //build index of the scene you want to switch to
private Ray ray;
private RaycastHit hit;
[serializefield]
private LayerMask myMask;//serializing it will give a dropdown menu in the editor to select the mask layer form, can also use int to select the layer
private readonly float rayLength = 10;
private readonly float timerMax = 5f; //Higher timerMax is a longer wait, lower timerMax is shorter...
private float timer = 0f;
private void Update()
{
ray = Camera.main.ViewportPointToRay(Vector3.forward);
if (Physics.Raycast(ray, out hit, rayLength, myMask))
{
timer += Time.deltaTime;
if(timer >= timerMax)
{
SceneManager.LoadScene(sceneIndex);//load the scene with the build index of sceneIndex
}
}
else
{
timer = 0;
}
}
Пока вы смотрите на объект в пределах длины лучевого заклинателя, который находится на том же слое, что и myMask
timer
будет увеличиваться до тех пор, пока не станет больше или равно timerMax
, когда это условие будет выполнено, оно изменит сцену.