Code (script located inside the character):
local camera = workspace.CurrentCamera
camera.CameraType = Enum.CameraType.Custom
local character = script.Parent
local humanoidRootPart:Part = character:WaitForChild("HumanoidRootPart")
local userInputService = game:GetService("UserInputService")
local minDistance = 5
local maxDistance = 15
local starterDistance = 7.5
local lerpSpeed = 0.1
script:WaitForChild("Offset")
script:WaitForChild("TargetOffset")
script.Offset.Value = Vector3.new(0, starterDistance, 0)
script.TargetOffset.Value = script.Offset.Value
userInputService.InputEnded:Connect(function(input, gameProcessed)
if input.KeyCode == Enum.KeyCode.Z and not gameProcessed then
if camera.CameraType == Enum.CameraType.Scriptable then
camera.CameraType = Enum.CameraType.Custom
camera.CameraSubject = character.Humanoid
else
camera.CameraType = Enum.CameraType.Scriptable
camera.CameraSubject = nil
end
end
end)
userInputService.InputChanged:Connect(function(input, gameProcessed)
if input.UserInputType == Enum.UserInputType.MouseWheel and not gameProcessed then
local scroll = input.Position.Z
local currentScroll = script.TargetOffset.Value.Y
currentScroll -= scroll
if currentScroll > maxDistance then
currentScroll = maxDistance
elseif currentScroll < minDistance then
currentScroll = minDistance
end
script.TargetOffset.Value = Vector3.new(0, currentScroll, 0)
end
end)
game:GetService("RunService").RenderStepped:Connect(function()
script.Offset.Value = script.Offset.Value:Lerp(script.TargetOffset.Value, lerpSpeed)
if camera.CameraType == Enum.CameraType.Scriptable then
camera.CFrame = CFrame.lookAt(humanoidRootPart.Position + script.Offset.Value, humanoidRootPart.Position)
end
end)
I’m making a tower defense game for fun and I want the player to activate a “top down view” where the character will be able to see from a bird’s eye perspective. It works, however whenever I activate the camera the player’s character is flung around, killed, and/or just straight up deleted. In attempt to fix this, I tried setting the camera subject to nil when entering the camera mode. I don’t know what’s causing this, if you have any ideas I would like to hear them. Thanks!
