Как сделать границы карты?
Всем доброго. Понимаю что вопрос банален для многих, но мне не ясно как это сделать. У меня есть карта ресурсов (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 шт):
// 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 + там дальность самой камеры идёт в счёт. Я так и не понял.

