Something like this would probably work. Experiment and add some invisible walls that once the player hits (onTouch) moves the camera position. Slider.position = Vector3.new(0,5,0)
(make sure this is a local script in starter pack)
local Player = game.Players.LocalPlayer
repeat wait() until Player.Character
local Character = Player.Character
local Cam = game.Workspace.CurrentCamera
local RunService = game:GetService('RunService')
function Prep(Char)
local cPart = Instance.new("Part", Char)
cPart.Name = ("CamPart")
cPart.CanCollide = false
cPart.Transparency = 1
cPart.Anchored = false
cPart.Position = Character:WaitForChild("Head").Position
local bPos = Instance.new("BodyPosition", cPart)
bPos.Name = ("Slider")
bPos.maxForce = Vector3.new(math.huge, math.huge, math.huge)
bPos.D = (2000)
bPos.P = (10000)
Cam.CameraType= 'Custom'
Cam.CameraType= 'Scriptable'
end
Prep(Character)
local CamPart = Character:WaitForChild("CamPart")
local Slider = CamPart:WaitForChild("Slider")
local Torso = Character:WaitForChild("Torso")
RunService.RenderStepped:connect(function()
Slider.position = Vector3.new(0,5,0)
Cam.CoordinateFrame= CFrame.new(Vector3.new(CamPart.Position.X, CamPart.Position.Y+15, CamPart.Position.Z +5),CamPart.Position)
Torso.CFrame = CFrame.new(Vector3.new(Torso.Position.X , Torso.Position.Y, 1), Vector3.new(Mouse.Hit.X, Torso.Position.Y, Torso.Position.Z))
end)