コード例 #1
0
    void LateUpdate()
    {
        // Наведение фокуса камеры

        float dt = Time.deltaTime;

        // Наводим камеру на новое место
        _targetOffset  = GetNewOffset();
        _currentOffset = Vector2.Lerp(_currentOffset, _targetOffset, MoveSpeed * dt);

        // Если камера навелась на фокус - фиксируем положение
        if (Mathf.Abs(_targetOffset.x - _currentOffset.x) < 0.0025f)
        {
            _currentOffset.x = _targetOffset.x;
        }
        if (Mathf.Abs(_targetOffset.y - _currentOffset.y) < 0.0025f)
        {
            _currentOffset.y = _targetOffset.y;
        }

        var prevPosition = _position;

        _position = GetNewPosition();
        _position = Vector2.Lerp(prevPosition, _position, FollowSpeed * dt);

        //limitBounds(_position);

        _zoom = XMath.Lerp(_zoom, GetNewZoom(), ZoomSpeed * dt);
        _zoom = Mathf.Min(_zoom, 1f);

        UpdateTransform();
    }