При использовании перспективной камеры, как мне закрепить объект, находящийся в мировом пространстве, за пределы экрана? - PullRequest
0 голосов
/ 06 мая 2020

Здесь новичок, использующий Unity. Я использую перспективную камеру с холстом мирового пространства, который меняет положение в зависимости от того, какой персонаж говорит (например, речевой пузырь над его головой).

Я хочу, чтобы холст не выходил за пределы экрана когда персонаж говорит за кадром, но я борюсь с логом c. Нужно ли мне получить только ширину и высоту камеры и преобразовать их в мировое пространство для зажима? Вот мой текущий код:

void PositionCanvas()
{
    if (character != null)
    {
        Vector2 screenBounds = Camera.main.ScreenToWorldPoint(new Vector3(Screen.width, Screen.height, Camera.main.transform.position.z)); // Get the screen bounds in world units

        Vector2 targetPosition = new Vector2(GetCharacterPosition().x, GetCharacterPosition().y + charHeight * dialogueBoxHeight); // The target canvas position above the character sprite

        targetPosition.x = Mathf.Clamp(targetPosition.x, screenBounds.x + objectSize.x, screenBounds.x * -1 - objectSize.x);
        targetPosition.y = Mathf.Clamp(targetPosition.y, screenBounds.y + objectSize.y, screenBounds.y * -1 - objectSize.y);

        transform.position = targetPosition;
    }
}

Вот результат этого кода.

Как показано на гифке, положение Y холста, похоже, ограничено край экрана, но положение X игнорируется до тех пор, пока не достигнет точки, в которой он начинает следовать за своей целью. произвольные мировые числа (-5, 5), но я понимаю, что это долгосрочное решение.

Любые указания на то, что я делаю неправильно, были бы очень признательны. Большое спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...