Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

How to fix camera lock on 3rd person does not follow you when you respawned?

Asked by 4 years ago
Edited 4 years ago

so the camera is supposed to work like this and how it works when i first joined the game (toggle camera lock) :

https://gyazo.com/7a827bfab7120e9838e7355a440532b2

but after i reset the camera no longer follows the player and got stuck on the last position how can i fix this issue so the camera will follow my character after i respawned

the issue:

https://gyazo.com/e422a03981278ad9ab1f65a2f872ddfc

Edit: Wrong script

local Players = game:GetService("Players")
local ContextActionService = game:GetService("ContextActionService")
local UserInputService = game:GetService("UserInputService")
local RunService = game:GetService("RunService")

local camera = workspace.CurrentCamera
local cameraOffset = Vector3.new(1, 4, 9)
local player = Players.LocalPlayer


player.CharacterAdded:Connect(function(character)

    local humanoid = character:WaitForChild("Humanoid")
    local rootPart = character:WaitForChild("HumanoidRootPart")
    humanoid.AutoRotate = false

    local cameraAngleX = 0
    local cameraAngleY = 0

    local function playerInput(actionName, inputState, inputObject)
        -- Calculate camera/player rotation on input change
        if inputState == Enum.UserInputState.Change then
            cameraAngleX = cameraAngleX - inputObject.Delta.X
            -- Reduce vertical mouse/touch sensitivity and clamp vertical axis
            cameraAngleY = math.clamp(cameraAngleY-inputObject.Delta.Y*0.4, -75, 75)
            -- Rotate root part CFrame by X delta
            rootPart.CFrame = rootPart.CFrame * CFrame.Angles(0, math.rad(-inputObject.Delta.X), 0)
        end
    end
    ContextActionService:BindAction("PlayerInput", playerInput, false, Enum.UserInputType.MouseMovement, Enum.UserInputType.Touch)

    RunService.RenderStepped:Connect(function()
        if camera.CameraType ~= Enum.CameraType.Scriptable then
            camera.CameraType = Enum.CameraType.Scriptable
        end
        local startCFrame = CFrame.new((rootPart.CFrame.Position)) * CFrame.Angles(0, math.rad(cameraAngleX), 0) * CFrame.Angles(math.rad(cameraAngleY), 0, 0)
        local cameraCFrame = startCFrame:ToWorldSpace(CFrame.new(cameraOffset.X, cameraOffset.Y, cameraOffset.Z))
        local cameraFocus = startCFrame:ToWorldSpace(CFrame.new(cameraOffset.X, cameraOffset.Y, -10000))
        camera.CFrame = CFrame.new(cameraCFrame.Position, cameraFocus.Position)
    end)
end)

local function focusControl(actionName, inputState, inputObject)
    -- Lock and hide mouse icon on input began
    if inputState == Enum.UserInputState.Begin then
        UserInputService.MouseBehavior = Enum.MouseBehavior.LockCenter
        UserInputService.MouseIconEnabled = true
        ContextActionService:UnbindAction("FocusControl", focusControl, false, Enum.UserInputType.MouseButton1, Enum.UserInputType.Touch, Enum.UserInputType.Focus)
    end
end

ContextActionService:BindAction("FocusControl", focusControl, false, Enum.UserInputType.MouseButton1, Enum.UserInputType.Touch, Enum.UserInputType.Focus)

Answer this question