Rotation with Camera not working

Basically, I’m making a JoJo game and I need my “Stand” to follow the cameras rotation, kind of like this gif. b7af32c7747f095ee98a1e19138123a7

I’ve been looking around a bit and I figured that using a BodyGyro would work, but it isn’t for some reason. My localscript sends a remoteevent to the serverscript so that it updates the bodygyro on every RenderStepped but it just isn’t working.

local rp = game:GetService("ReplicatedStorage")
local powers = rp:WaitForChild("Powers")
local remote = powers:WaitForChild("HierophantGreen"):WaitForChild("Pilot")
local control = remote:WaitForChild("Forward")
local rotate = remote:WaitForChild("Rotate")

local pilot = false

local speed = 100

remote.OnServerEvent:Connect(function(player, active)
	local humrp = player.Character:WaitForChild("HumanoidRootPart")
	local hum = player.Character:WaitForChild("Humanoid")
	
	if workspace:FindFirstChild(player.Name.." Power") and active == false then
		power = workspace:FindFirstChild(player.Name.." Power"):WaitForChild("HG")
		
		local prevWeld = power:WaitForChild("HumanoidRootPart"):WaitForChild("Power Weld")
		prevWeld:Destroy()
		
		hum.WalkSpeed = 0
		hum.JumpPower = 0
		
		local powerhumrp = power:WaitForChild("HumanoidRootPart")
		
		force = Instance.new("BodyVelocity")
		force.Parent = power:WaitForChild("Torso")
		force.MaxForce = Vector3.new(math.huge,math.huge,math.huge)
		force.Velocity = Vector3.new(0,power:WaitForChild("HumanoidRootPart").Mass * workspace.Gravity,0)
		
		bg = Instance.new("BodyGyro")
		bg.Parent = power:WaitForChild("HumanoidRootPart")
		
		pilot = true
		
	elseif workspace:FindFirstChild(player.Name.." Power") and active == true then
		local power = workspace:FindFirstChild(player.Name.." Power"):WaitForChild("HG")
		
		if power:WaitForChild("HumanoidRootPart"):FindFirstChild("Power Weld") then
			force:Destroy()
			bg:Destroy()
			
			hum.WalkSpeed = 16
			hum.JumpPower = 50
			
			local prevWeld = power:WaitForChild("HumanoidRootPart"):WaitForChild("Power Weld")
			prevWeld:Destroy()
			
			local powerhumrp = power:WaitForChild("HumanoidRootPart")
			powerhumrp.CFrame = humrp.CFrame * CFrame.new(-2,0,2)

			local weld = Instance.new("ManualWeld")
			weld.Name = "Power Weld"
			weld.Part0 = power:WaitForChild("HumanoidRootPart")
			weld.Part1 = humrp
			weld.C0 = power:WaitForChild("HumanoidRootPart").CFrame:inverse() * humrp.CFrame
			weld.Parent = weld.Part0
		else
			force:Destroy()
			bg:Destroy()
			
			hum.WalkSpeed = 16
			hum.JumpPower = 50
			
			local powerhumrp = power:WaitForChild("HumanoidRootPart")
			powerhumrp.CFrame = humrp.CFrame * CFrame.new(-2,0,2)

			local weld = Instance.new("ManualWeld")
			weld.Name = "Power Weld"
			weld.Part0 = power:WaitForChild("HumanoidRootPart")
			weld.Part1 = humrp
			weld.C0 = power:WaitForChild("HumanoidRootPart").CFrame:inverse() * humrp.CFrame
			weld.Parent = weld.Part0
		end
		
		pilot = false
	end
end)

--control.OnServerEvent:Connect(function(player, front, side)
--	if pilot == true then
--		force.Velocity = power:WaitForChild("HumanoidRootPart").CFrame.lookVector * Vector3.new(front/2, 1, side) * speed
--	end
--end)

rotate.OnServerEvent:Connect(function(player, cameraLook) --this is the interesting part
	bg.CFrame = CFrame.new(power:WaitForChild("HumanoidRootPart").Position, cameraLook.Unit)
end)

Here’s what it looks like in-game:
https://gyazo.com/9c3bc202b61d4fc76306f9b14bc3d0f6

Thank you.