Terrain.SampleHeight() won't work

I have just written the following code to keep some group of objects at the same height from the terrain. But somehow, they don’t do anything, neither going up nor down, literally nothing.

        float leaderDistanceFromTerrain = leaderRepresenter.transform.position.y - (Terrain.activeTerrain.SampleHeight(leaderRepresenter.transform.position) + Terrain.activeTerrain.transform.position.y);
        float distanceFromTerrain = transform.position.y - (Terrain.activeTerrain.SampleHeight(transform.position) + Terrain.activeTerrain.transform.position.y);

        if (leaderDistanceFromTerrain != distanceFromTerrain)
        {
            float calculatedY = (Terrain.activeTerrain.SampleHeight(transform.position) + Terrain.activeTerrain.transform.position.y) + leaderDistanceFromTerrain;

            transform.position.Set(transform.position.x, calculatedY, transform.position.z);
        }

I don’t know why it didn’t work but for those who wants to do same thing, i overcame it by raycasting below and getting hit point.