Сделать холст, чтобы следовать за камерой - PullRequest
0 голосов
/ 05 февраля 2020

Я хочу, чтобы холст пользовательского интерфейса следовал за камерой, чтобы он всегда был перед головой, а также взаимодействовал, как меню VR. Я использую следующий код для этого.

public class FollowMe : MonoBehaviour
{
    public GameObject menuCanvas;
    public Camera FirstPersonCamera;
    [Range(0, 1)]
    public float smoothFactor = 0.5f;

// how far to stay away fromt he center

    public float offsetRadius   = 0.3f;
    public float distanceToHead = 4;

    public  void Update()
    {
        // make the UI always face towards the camera
        menuCanvas.transform.rotation = FirstPersonCamera.transform.rotation;

        var cameraCenter = FirstPersonCamera.transform.position + FirstPersonCamera.transform.forward * distanceToHead;

        var currentPos = menuCanvas.transform.position;

        // in which direction from the center?
        var direction = currentPos - cameraCenter;

        // target is in the same direction but offsetRadius
        // from the center
        var targetPosition = cameraCenter + direction.normalized * offsetRadius;

        // finally interpolate towards this position
        menuCanvas.transform.position = Vector3.Lerp(currentPos, targetPosition, smoothFactor);
    }
}

К сожалению, перед камерой мигает холст, и он неправильно расположен. Как мне сделать меню, чтобы следить за камерой? |

Ответы [ 2 ]

1 голос
/ 05 февраля 2020

Простой способ сделать это - использовать экранное пространство - режим камеры, который вы можете настроить из компонента Canvas и в свойствах режима рендеринга.

Второй способ, если вам нужен больший контроль над поведением вашего холста, тогда вы можете используйте Canvas Render Mode - «World Space», а затем с помощью скрипта вы можете обработать холст некоторому игровому объекту.

0 голосов
/ 05 февраля 2020

Если для этого нет оснований, вы можете использовать ScreenSpace - Camera canvas, как указано в документе . Затем вы можете ссылаться на вашу камеру FPS как на камеру рендеринга для холста.

...