Is it possible for the server to change the physics of a part owned by a client?

If I were to spawn a part from the server, give the client network ownership over it, and then have the server apply some force to the part via ApplyImpulse, the part is completely unaffected and just falls to the ground. Is there any way around this besides having the client make the ApplyImpulse call?

2 Likes

BasePart:SetNetworkOwnership(nil)

I’ve set the network ownership to the client so that the parts can move in a more responsive manner (that’s the goal), not the server, and I want the server to be able to call ApplyImpulse on the part. Setting the network ownership back to the server (which is what I assume you’re saying) to then call ApplyImpulse would result in a very bad stutter.

You could try firing a remote event to the server and set the parameters to the part, and then in the server script you can use ApplyImpulse

example:

client

local part = Instance.new("Part")
local event = game.ReplicatedStorage.RemoteEvent

event:FireServer(part)

server

game.ReplicatedStorage.RemoteEvent.OnServerEvent:Connect(function(part)

part:ApplyImpulse() -- if this is wrong u can change it, ive never used apply impulse

end)
1 Like

Never have I done this since I’ve handled most of instances like that on the client only. There might be a solution to that but can be hacky and has more cons than pros.