Как сделать границы карты?

Всем доброго. Понимаю что вопрос банален для многих, но мне не ясно как это сделать. У меня есть карта ресурсов (gameObject - Map), ширина и высота которой определяеться в коде.

// Определяем ширину и высоту Map
        gameObject.GetComponent<RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Horizontal,
            MapGeneration.Instanse.Width * 0.48f);
        gameObject.GetComponent<RectTransform>().SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical,
            MapGeneration.Instanse.Height * 0.48f);

Width и Height - это количество ресурсов которое будет определять эти же параметры.

введите сюда описание изображения

введите сюда описание изображения

Нашёл код который ограничивает движение камеры

// borders
[SerializeField] private float left;
[SerializeField] private float right;
[SerializeField] private float bottom;
[SerializeField] private float top;

private void LateUpdate()
{
    transform.position = new Vector3(
        Mathf.Clamp(Player.Instanse.transform.position.x, left, right),
        Mathf.Clamp(Player.Instanse.transform.position.y, bottom, top),
        transform.position.z);
}
private void OnDrawGizmos()
{
    Gizmos.color = Color.magenta;
    Gizmos.DrawLine(new Vector2(left, top), new Vector2(right, top));
    Gizmos.DrawLine(new Vector2(left, bottom), new Vector2(right, bottom));
    Gizmos.DrawLine(new Vector2(left, top), new Vector2(left, bottom));
    Gizmos.DrawLine(new Vector2(right, top), new Vector2(right, bottom));
}

И он хорошо работает, не выпускает камеру за нарисование границы(квадрат)введите сюда описание изображения

Но я не знаю как подстроить это ограничение. Для меня не понятно как изъять от Map крайние точки и использовать их в границах карты. Как мне правильно реализовать границы(2-ой слайд) чтобы игрок и камера не выходили за них?


Ответы (1 шт):

Автор решения: JuniorOne
// bounds
private float left, right, bottom, top;
private void Start()
{
    left = MapGeneration.Instanse.Width * -0.24f;
    right = MapGeneration.Instanse.Width * 0.24f;
    bottom = MapGeneration.Instanse.Height * -0.48f;
    top = 5;
}
private void FixedUpdate()
{
    transform.position = new Vector3(
        Mathf.Clamp(Player.Instanse.transform.position.x, left + 0.24f, right - 0.24f),
        Mathf.Clamp(Player.Instanse.transform.position.y, bottom, top),
        transform.position.z);
}

В общем так я решил границы карты а с камерой ещё не получилось. Чёт там сложно из-за перевода с розришения екрана в unit-pixels + там дальность самой камеры идёт в счёт. Я так и не понял.

→ Ссылка