Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --// Made by MohhayScripts
- --// Null Init
- local Null = require(game:GetService("ReplicatedStorage").Null)
- --// Services
- local TweenService = game:GetService("TweenService")
- local UserInputService = game:GetService("UserInputService")
- --// Varaibles
- local Character = script.Parent
- local Camera = Null.Camera
- local Mouse = Null.Mouse
- local Root = Character:WaitForChild("HumanoidRootPart")
- local Humanoid = Character:WaitForChild("Humanoid")
- local neck = Character:WaitForChild("Head"):WaitForChild("Neck")
- local waist = Character:WaitForChild("UpperTorso"):WaitForChild("Waist")
- local originalWaist = waist.C0
- local originalNeck = neck.C0
- local CameraXSensitivity = 0.005
- local IsMouseLocked = true
- local left = false
- local yaw = 0
- local pitch = 0
- local lastTween
- local params = RaycastParams.new()
- params.FilterType = Enum.RaycastFilterType.Blacklist
- params.FilterDescendantsInstances = {Character}
- --// Init
- Camera.CameraType = Enum.CameraType.Scriptable
- UserInputService.MouseIconEnabled = false
- UserInputService.InputBegan:Connect(function(input)
- if input.UserInputType == Enum.UserInputType.Keyboard then
- if input.KeyCode == Enum.KeyCode.LeftAlt then
- IsMouseLocked = not IsMouseLocked
- if Camera.CameraType == Enum.CameraType.Scriptable then
- Camera.CameraType = Enum.CameraType.Custom
- UserInputService.MouseIconEnabled = true
- else
- Camera.CameraType = Enum.CameraType.Scriptable
- UserInputService.MouseIconEnabled = false
- end
- elseif input.KeyCode == Enum.KeyCode.Q then
- left = not left
- end
- end
- end)
- UserInputService.InputChanged:Connect(function(input)
- if input.UserInputType == Enum.UserInputType.MouseMovement then
- yaw = yaw - input.Delta.X * CameraXSensitivity
- pitch = math.clamp(pitch - input.Delta.Y * CameraXSensitivity, -math.pi/2 + 0.01, math.pi/2 - 0.01)
- neck.C0 = originalNeck * CFrame.Angles(pitch / 2, 0, 0)
- waist.C0 = originalWaist * CFrame.Angles(pitch / 2, 0, 0)
- end
- end)
- game:GetService("RunService"):BindToRenderStep("customCamera", 201, function()
- local focus = Root.Position
- local cameraCFrame = CFrame.fromOrientation(pitch, yaw, 0) * (left and CFrame.new(-3,3,10) or CFrame.new(3, 3, 10)) + Root.Position
- local result = workspace:Raycast(focus, cameraCFrame.Position - focus, params)
- if result then
- cameraCFrame = CFrame.fromMatrix(result.Position, cameraCFrame.RightVector, cameraCFrame.UpVector, -cameraCFrame.LookVector)
- end
- if IsMouseLocked then
- if lastTween then
- lastTween:Pause()
- end
- lastTween = TweenService:Create(Camera,TweenInfo.new(.2),{CFrame = cameraCFrame})
- lastTween:Play()
- else
- if lastTween then
- lastTween:Pause()
- end
- Camera.CFrame = cameraCFrame
- end
- if IsMouseLocked then
- UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
- else
- UserInputService.MouseBehavior = Enum.MouseBehavior.Default
- end
- end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement