Интерфейсы экранного пространства присутствуют перед камерой? - PullRequest
0 голосов
/ 09 июля 2020

Есть ли в Unity способ реализовать пользовательские интерфейсы, присутствующие на холсте экранного пространства, чтобы они также присутствовали перед камерой в VR? Это пользовательские интерфейсы экранного пространства -> Worldspace Camera. Пользовательский интерфейс можно отрегулировать с помощью шкалы и держать прямо перед камерой? Есть ли способ добиться этого?

1 Ответ

1 голос
/ 09 июля 2020

Афайк в 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;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...