Афайк в VR a ScreenSpace - Overlay
не отображается вообще . Это имеет смысл, потому что в любом случае холст будет иметь 0
расстояние до камеры / глаз, что вызовет чрезвычайно неприятный опыт.
Я не могу много сказать о ScreenSpace - Camera
, но, по крайней мере, на API он устанавливает холст всегда на определенном расстоянии от камеры и автоматически масштабируется, чтобы заполнить весь прямоугольник вида.
Однако, на самом деле, лучший пользовательский интерфейс обычно использует холст Worldspace
и всегда размещает его примерно на 1,5 метра перед вашей головой.
Кроме того, вы могли бы немного его повторить, например, например,
public class KeepInFrontOfHead : MonoBehaviour
{
[SerializeField] private Camera _mainCamera;
[SerializeField] private float _offset = 1.5f;
[SerializeField][Range(0f,1f)] private float _interpolationRate = 0.5f;
private void Awake()
{
if(!_mainCamera) _mainCamera = Camera.main;
}
private void LateUpdate()
{
var targetPosition = _mainCamera.transform.position + _mainCamera.transform.forward * _offset;
transform.position = Vector3.Lerp(transform.position, targetPosition, _interpolationRate);
var targetRotation = Camera.transform.eulerAngles;
targetRotation.z = 0;
transform.eulerAngles = targetRotation;
}
}