Screen3D - A 3D UI framework that just works

I have this weird bug concering shiftlock (Specifically SmoothShiftlock) Which offsets the humanoid.cameraoffset value.

Here is the visual bug:

When you turn on shiftlock, it basically offsets too far and the 3d UI is no longer visible.

Here is the code for the 3d UI:

--//Services local ReplicatedStorage = game:GetService("ReplicatedStorage") local RunService = game:GetService("RunService") --//Local Variables local Camera = workspace.CurrentCamera --//Modules local Modules = ReplicatedStorage.Modules local Screen3D = require(Modules.UI.Components.Screen3D) local Information = require(ReplicatedStorage.Shared.Information) local UserData = require(ReplicatedStorage.Shared.UserData) --//Information local MovesetInformation = Information.Movesets local ChihiroInformation = MovesetInformation.Chihiro local KunishigeInformation = MovesetInformation.Kunishige local GlobalData = UserData.Global --//Main local Knit = require(ReplicatedStorage.Packages.Knit) --//UI local PlayerGui: PlayerGui = Knit.Player.PlayerGui local HotbarGUI: GuiBase = PlayerGui:WaitForChild("Hotbar") local HotbarFrame: Frame = HotbarGUI:WaitForChild("Hotbar") local TipCanvas: CanvasGroup = HotbarFrame:WaitForChild("Tip") local SkillSlots = HotbarFrame:WaitForChild("SkillSlots") local SkillSlot1: TextButton = SkillSlots:WaitForChild("1") local SkillSlot2: TextButton = SkillSlots:WaitForChild("2") local SkillSlot3: TextButton = SkillSlots:WaitForChild("3") local SkillSlot4: TextButton = SkillSlots:WaitForChild("4") local SkillSlotText1: TextLabel = SkillSlot1:WaitForChild("ButtonText") local SkillSlotText2: TextLabel = SkillSlot2:WaitForChild("ButtonText") local SkillSlotText3: TextLabel = SkillSlot3:WaitForChild("ButtonText") local SkillSlotText4: TextLabel = SkillSlot4:WaitForChild("ButtonText") --//3D UI local ThreeDHotbarGUI = Screen3D.new(HotbarGUI, 5) local ThreeDHotbarFrame = ThreeDHotbarGUI:GetComponent3D(HotbarFrame) local ThreeDTipCanvas = ThreeDHotbarGUI:GetComponent3D(TipCanvas) local ThreeDSkillSlots = ThreeDHotbarGUI:GetComponent3D(SkillSlots) local ThreeDSkillSlot1 = ThreeDHotbarGUI:GetComponent3D(SkillSlot1) local ThreeDSkillSlot2 = ThreeDHotbarGUI:GetComponent3D(SkillSlot2) local ThreeDSkillSlot3 = ThreeDHotbarGUI:GetComponent3D(SkillSlot3) local ThreeDSkillSlot4 = ThreeDHotbarGUI:GetComponent3D(SkillSlot4) local ThreeDSkillSlotText1 = ThreeDHotbarGUI:GetComponent3D(SkillSlotText1) local ThreeDSkillSlotText2 = ThreeDHotbarGUI:GetComponent3D(SkillSlotText2) local ThreeDSkillSlotText3 = ThreeDHotbarGUI:GetComponent3D(SkillSlotText3) local ThreeDSkillSlotText4 = ThreeDHotbarGUI:GetComponent3D(SkillSlotText4) --//Settings local LerpSpeed = 2 local Sensitivity = .02 local MaxVelocity : number = 1 --or anything --//Module local HotBarController = Knit.CreateController {	Name = "HotBarController",	CurrentMoveset = nil, } --//Start function HotBarController:KnitStart()	self:Create3DHotbar() end --//Methods function HotBarController:Create3DHotbar()	task.spawn(function()	--//Enable	ThreeDHotbarFrame:Enable()	ThreeDTipCanvas:Enable()	ThreeDSkillSlots:Enable()	ThreeDSkillSlot1:Enable()	ThreeDSkillSlot2:Enable()	ThreeDSkillSlot3:Enable()	ThreeDSkillSlot4:Enable()	ThreeDSkillSlotText1:Enable()	ThreeDSkillSlotText2:Enable()	ThreeDSkillSlotText3:Enable()	ThreeDSkillSlotText4:Enable()	--//Inital Offset	ThreeDHotbarFrame.offset = CFrame.Angles(0,math.rad(10),0)	ThreeDTipCanvas.offset = CFrame.Angles(0,math.rad(10),0)	ThreeDSkillSlots.offset = CFrame.Angles(0,math.rad(10),0)	ThreeDSkillSlot1.offset = CFrame.Angles(0,math.rad(10),0)	ThreeDSkillSlot2.offset = CFrame.Angles(0,math.rad(10),0)	ThreeDSkillSlot3.offset = CFrame.Angles(0,math.rad(10),0)	ThreeDSkillSlot4.offset = CFrame.Angles(0,math.rad(10),0)	ThreeDSkillSlotText1.offset = CFrame.Angles(0,math.rad(10),0)	ThreeDSkillSlotText2.offset = CFrame.Angles(0,math.rad(10),0)	ThreeDSkillSlotText3.offset = CFrame.Angles(0,math.rad(10),0)	ThreeDSkillSlotText4.offset = CFrame.Angles(0,math.rad(10),0)	local Connection = RunService.RenderStepped:Connect(function(DeltaTime)	local RootPartAssemblyLinearVelocity = Knit.Player.Character.HumanoidRootPart.AssemblyLinearVelocity	if RootPartAssemblyLinearVelocity == 0 then	return	end	local RelativeVelocity = Camera.CFrame.Rotation:ToObjectSpace(CFrame.new(RootPartAssemblyLinearVelocity * Sensitivity)).Position	local LerpAlpha = math.min(DeltaTime * LerpSpeed, 1)	if RelativeVelocity.Magnitude ~= 0 then	RelativeVelocity = math.min(MaxVelocity, RelativeVelocity.Magnitude ) * RelativeVelocity.Unit	end	ThreeDHotbarGUI.rootOffset = ThreeDHotbarGUI.rootOffset:Lerp(CFrame.new(RelativeVelocity), LerpAlpha)	end)	end) end function HotBarController:SetHotbarEnabled(Boolean: boolean)	for _,SurfaceGui: SurfaceGui in HotbarGUI:GetDescendants() do	if SurfaceGui:IsA("SurfaceGui") then	SurfaceGui.Enabled = Boolean	end	end end function HotBarController:SetSkillTexts(CharacterName: string)	if CharacterName == "Chihiro" then	self.CurrentMoveset = "Chihiro"	SkillSlotText1.Text = ChihiroInformation.Skills.One	SkillSlotText2.Text = ChihiroInformation.Skills.Two	SkillSlotText3.Text = ChihiroInformation.Skills.Three	SkillSlotText4.Text = ChihiroInformation.Skills.Four	elseif CharacterName == "Kunishige" then	self.CurrentMoveset = "Kunishige"	SkillSlotText1.Text = KunishigeInformation.Skills.One	SkillSlotText2.Text = KunishigeInformation.Skills.Two	SkillSlotText3.Text = KunishigeInformation.Skills.Three	SkillSlotText4.Text = KunishigeInformation.Skills.Four	end end return HotBarController 

Any idea how to fix this?

4 Likes