This is where you can use UnreliableRemoteEvents. You can send it to the server to replicate to every other player.
Add an UnreliableRemoteEvent in ReplicatedStorage named “UpdateShoulders” (or whatever name you want, just make sure to change the variables in the scripts):
Add a new script in ServerScriptService and paste this inside:
local updateShoulders = game:GetService("ReplicatedStorage").UpdateShoulders
updateShoulders.OnServerEvent:Connect(function(player, positionData)
local torso = player.Character.Torso
torso["Left Shoulder"].C0 = positionData[1]
torso["Right Shoulder"].C0 = positionData[2]
end)
We’re using UnreliableRemoteEvents to save resources because it doesn’t matter if some packets are lost, since new packets will correct the position. You could also send events less frequently to save more performance, but that is for you to implement.