Why does the server think the ball touched it even though its mid air

before i did all of it in server but i tried doing it all in client. no remote events used

If it’s all happening on the client then the position shouldn’t reset before touching the Baseplate

heres the script if it is doing anything

(parent is starterplayerscripts. local script)

game.Workspace:WaitForChild("Baseplate").Touched:Connect(function(hit)
	print(hit.Name) -- ignore
	if hit.Name == "Ball" then
		workspace.Ball.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
		workspace.Ball.Position = Vector3.new(-7.748, 6, -3.602)
	end
end)

Have you tried the other way? Giving the touched event to the ball and resetting it when it touches the Baseplate

yes and that also didnt work. but i didnt do it in the local version.

Try making the player the network owner of the ball

i realised i forgot to remove the global script and now it doesnt even work

Assuming that you want each Player to have their own ball, it would be best that you create the ball through script on the client side and give the ball the events that it needs

nope. there will be one ball and 2 players just like in ping pong, im making a ping pong game

Well you are creating the ball on the server and are trying to modify it on the client, you’d need to change network ownerships based on who bounced the ball last

alright ill try that out. (filler message for the message minimum limit)

Problem with this is that due to lag, the ball might never touch a character on the server side, so network ownership won’t be changed

issue with that is the script completely gets ruined

yo this actually does work, ill try to modify it for a bit until i did it perfectly

Keep in mind if the player is laggy, the ball might skip positions on the server side and could ignore touched events

Edit: Actually i think the Player might trigger server sided touched events alongside the client sided one

nevermind that solution was terrible

Terrible in which way, would be nice to know what about it didn’t work as expected

basically when hitting the ball im making the network ownership to the player and when it gets hitted by the baseplate or any part that detects the ball it will reset it to nil. turns out rallies became impossible as you no longer can hit since the network ownership still is you

i think we have to give up and use server ways instead of client ways

Baseplate.Touched should be an event in a server script, first set the network owner back to nil, then change the balls position and so on

i still dont even know why the ball is delayed in the client but not in server