To help you understand, I have a script that makes your camera look at where you mouse is.
It works really well when the camera is set to default, however if you were to try it with a scriptable camera type, you'll see that the camera will work much more differently than before.
I'll show my script here.
local RunService = game:GetService("RunService")
local InputService = game:GetService("UserInputService")
local Player = game.Players.LocalPlayer
local Camera = game.Workspace.CurrentCamera
local Mouse = Player:GetMouse()
local CameraOffset = Vector3.new(0, 40, 20)
local Aiming = false
InputService.InputBegan:connect(function(Input, Processed)
if not Processed then
if Input.UserInputType == Enum.UserInputType.MouseButton1 then
Aiming = true
end
end
end)
InputService.InputEnded:connect(function(Input, Processed)
if Input.UserInputType == Enum.UserInputType.MouseButton1 then
Aiming = false
end
end)
RunService.RenderStepped:connect(function()
Camera.CameraType = "Scriptable" -- REMOVE THIS PART IF YOU WANT TO SEE
-- HOW IT SHOULD BE WORKING
local Character = Player.Character
local HumanoidRootPart = Character:FindFirstChild("HumanoidRootPart")
if HumanoidRootPart then
local PlayerPosition = HumanoidRootPart.Position
local MousePosition = Mouse.hit.p
local RelativePosition = CFrame.new(PlayerPosition):toObjectSpace(CFrame.new(MousePosition)).p
local X, Z = RelativePosition.X, RelativePosition.Z
local CameraPosition = PlayerPosition + CameraOffset
if Aiming then
Camera.CoordinateFrame = CFrame.new(CameraPosition, PlayerPosition) + Vector3.new(X, 0, Z)
else
Camera.CoordinateFrame = CFrame.new(CameraPosition, PlayerPosition)
end
end
end)
Simply remove the line that makes the camera type scriptable to see how it was meant to work, then just click away with the left mouse button to see it in action.
Thank you!
