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

How do I go about making a custom scroll zoom in & out for my custom third person camera?

Asked by 2 years ago

Just recently decided to try out coding in ROBLOX, and it's been pretty fun! I pulled a third person script from one of the ROBLOX Developer articles and tweaked it, and I've got a pretty solid camera so far, custom poppercam and all.

Question is, I'm not sure how to implement a zoom in & out function through a scroll wheel. This is what I have set up so far:

    local function cameraLock(character)
        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)


        if(Popper == true) then -- Don't mind this, this is a custom poppercam.
            local Ignore = {
                rootPart.Parent
            }
            local CheckRay = Ray.new(rootPart.Position   + cameraDefault, cameraCFrame.Position - rootPart.Position)
            local HitPart, HitPosition, Normal = game.Workspace:FindPartOnRayWithIgnoreList(CheckRay, Ignore, false, true)

            --print(Normal)
            if HitPart then
                camera.CFrame = (camera.CFrame - (camera.CFrame.Position - (HitPosition)) + ((player.Character.Head.Position - camera.CFrame.Position).Unit) * 0.372)
            end
        end

    end

I use RunService.RenderStepped:Connect to get this to run at all times, with a separate function to hide and lock mouse control.

I did some digging, and I came up with two events to check if mousewheel up/down is being fired:

    mouse.WheelForward:Connect(function(inputObject)
        print("Wheel went forward!") 
    end)

    mouse.WheelBackward:Connect(function()
            print("Wheel went backward!") 
    end)

Thing is, I can't exactly insert this onto the former function, as it's being called on every frame. Testing it inside cameraLock() prints "Wheel went forward!" three hundred times, hahaha.

Should I keep using this? I'm not sure what other ways I can approach this. I'd take this to the ROBLOX Dev Forum but I'm not a member yet.

Any help is appreciated! Again, I'm still getting a grasp on LUA as a whole, concepts and all, so, that's another thing to keep in mind. Thanks!

Answer this question