I use this for my weapon blocking (by wall) system, I think it will work with your camera
You can calculate the distance between the pickInfo.position and the entity which you put start of Pick (Beam Point 1)
then use the maximum range of your camera to player (self.defaultCameraRange) minus that, you get the distance between MaxRange to pickInfo.position (called self.collisionMinusRange)
Because camera point its Z axis to player, so that you can use entity:Move(0,0,self.collisionMinusRange)
In the meantime, Use camera:SetPosition(self.beamPoint2:GetPosition(true)) to keep you camera at the maxRange when not collided any obstacle
Hope you can understand what I am trying to explain