function Движение(ключники) {
    this.создать = function()
    {
        this.задано = {};
        var тут = this;
        ключники.push(function(ключ, путь, значение) {
            if (!путь[0].startsWith("движение"))
            {
                return;
            }
            тут.обработатьКлюч(ключ, путь, значение);
        });
    };

    this.обработатьКлюч = function(ключ, путь, значение)
    {
        var имя = путь[1];
        var свойство = путь.slice(2).join(".");
        if (!this.задано[имя])
        {
            this.задано[имя] = {};
        }
        this.задано[имя][свойство] = значение;
    };

    this.обновить = function()
    {
        for (var имя in this.задано)
        {
            var значения = this.задано[имя];
            for (var свойство in значения)
            {
                if (свойство.startsWith("объект"))
                {
                    var объект = значения[свойство];
                    this.передвинуть(объект, значения);
                }
            }
        }
    };

    this.передвинуть = function(объект, значения)
    {
        var тело = мир.объекты.тела[объект];
        var скоростьX = значения["скорость.0"];
        var скоростьY = значения["скорость.1"];
        var началоX = значения["x.0"];
        var конецX = значения["x.1"];
        var началоY = значения["y.0"];
        var конецY = значения["y.1"];

        if (
            !тело ||
            (скоростьX == null) ||
            (скоростьY == null) ||
            (началоX == null) ||
            (началоY == null) ||
            (конецX == null) ||
            (конецY == null)
        ) {
            return;
        }

        if (!тело.скоростьX)
        {
            тело.скоростьX = скоростьX;
        }
        if (!тело.скоростьY)
        {
            тело.скоростьY = скоростьY;
        }

        if (тело.position.x < началоX)
        {
            тело.скоростьX = скоростьX;
        }
        else if (тело.position.x > конецX)
        {
            тело.скоростьX = скоростьX * -1;
        }

        if (тело.position.y < началоY)
        {
            тело.скоростьY = скоростьY;
        }
        else if (тело.position.y > конецY)
        {
            тело.скоростьY = скоростьY * -1 * мир.физика.движок.gravity.y;
        }

        Matter.Sleeping.set(тело, false);
        Matter.Body.setVelocity(тело, { x: тело.скоростьX, y: тело.скоростьY });
    };

    // Конструктор.
    this.создать();
}
