@eugene2307

Как ограничить движение камеры в Unity?

Реализовал движение камеры по оси Y свайпами по экрану. Все работает до того момента, когда мне нужно ограничить движение камеры с помощью Mathf.Clamp(); Этот метод не ограничивает, а просто перемещает камеру от одной точки к другой(резко) Ниже код, помогите, что не так?

public float speed;
    private Vector2 startPos;
    private Camera cam;

    private float targetPos;

    public void Start()
    {
        cam = GetComponent<Camera>();
        targetPos = transform.position.y;
    }

    private void Update()
    {
        if (Input.GetMouseButtonDown(0)) startPos = cam.ScreenToWorldPoint(Input.mousePosition);
        else if (Input.GetMouseButton(0)) {
            float pos = cam.ScreenToWorldPoint(Input.mousePosition).y - startPos.y;
            targetPos = Mathf.Clamp(transform.position.y - pos * 25, 0.71f, -25.54f);
        }
        transform.position = new Vector3(transform.position.x, Mathf.Lerp(transform.position.y, targetPos, speed * Time.deltaTime), transform.position.z);
    }
  • Вопрос задан
  • 2032 просмотра
Решения вопроса 1
ReyGrau
@ReyGrau
Junior Unity Developer
transform.position = new Vector3(
				Mathf.Clamp(transform.position.x, _leftLimit, _rightLimit),
				Mathf.Clamp(transform.position.y, _bottomLimit, _topLimit),
				transform.localPosition.z);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы