Чтобы ограничить перемещение камеры в Unity в определенных границах, нужно добавить проверку на выход за пределы определенной зоны (координаты игрового мира). Вы можете задать границы для камеры (например, минимальные и максимальные значения по оси X и Y) и затем ограничивать позицию камеры в методе `Update`.
Вот пример того, как это можно сделать, исходя из указанного вами кода:
```csharp
using UnityEngine;
public class CameraController : MonoBehaviour
{
private float movementSpeed = 2f;
// Определяем границы для перемещения камеры
public float minX, maxX, minY, maxY;
void Update()
{
// Получаем ввод от игрока
float horizontalInput = Input.GetAxis("Horizontal");
float verticalInput = Input.GetAxis("Vertical");
// Вычисляем новое положение камеры
Vector3 newPosition = transform.position - new Vector3(horizontalInput * movementSpeed * Time.deltaTime, 0, verticalInput * movementSpeed * Time.deltaTime);
// Ограничиваем перемещение камеры в заданных границах
newPosition.x = Mathf.Clamp(newPosition.x, minX, maxX);
newPosition.z = Mathf.Clamp(newPosition.z, minY, maxY);
// Присваиваем новое положение камеры
transform.position = newPosition;
}
}
```
### Пояснение к коду:
1. **Параметры границ**: В этом коде добавлены переменные `minX`, `maxX`, `minY`, `maxY`, которые задают границы, в пределах которых может перемещаться камера. Вы должны установить эти значения в инспекторе, в редакторе Unity, чтобы задать нужные вам границы.
2. **Использование Mathf.Clamp**: `Mathf.Clamp` используется для ограничения значений `newPosition.x` и `newPosition.z` в пределах заданных границ. Этот метод гарантирует, что значения не выходят за пределы указанных вами границ.
3. **Обновление позиции камеры**: В конце мы обновляем позицию камеры только после проверки на выход за границы, чтобы она не вышла за допустимые пределы.
### Настройка границ:
Вы можете установить значения границ в инспекторе для компонента, который содержит данный скрипт. Например, если ваша игровая карта — это прямоугольник, вы можете установить `minX`, `maxX`, `minY` и `maxY` в соответствии с размерами вашей карты.
### Примечание:
В данном реализации вектор перемещения задействует ось `z`, поскольку вы упомянули игру с верхним видом. Обычно в 3D-пространстве ось `y` используется для высоты, а ось `z` для глубины. Если вам нужно адаптировать код под 2D-карту, убедитесь, что используется соответствующая ось для перемещения.