Basically, I’m making a JoJo game and I need my “Stand” to follow the cameras rotation, kind of like this gif. 
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.