Why Touched event is triggered before making contact with the moving part by AlignPosition

In the game, attacks are moved by AlignPosition.
Players should avoid it and run to the finish line.
If a player makes a contact with the attack then player speed is slowed for a while.

So touch is a quite important event in the game.

The problem is, as shown in the title, the Touch event is triggered before making actual any contract.
I attach a gif to prove it. Please look at the output console.

touch issue

The attack in the gif looks like below

  • Mover
    • canCollide & canQuery = false
    • canTouch = false
    • Anchored = true
    • Mashless = true
  • Part(with AlignPosition)
    • canCollide & canQuery = false
    • canTouch = true
    • Anchored = false
    • Mashless = true
  • Part
    • canCollide & canQuery = false
    • canTouch = true
    • Anchored = false
    • Mashless = true

Mover is attracting Part(with AlignPosition) and the Mover is located near the finish line.
Two parts are welded.

I’ve searched about the issue, but I couldn’t find a proper solution.

Any ideas or suggestions on that would be really appreciated.

I could be wrong, but here’s my theory behind it.

Network ownerships are a thing that exist in Roblox physics. Since the part is dependent on physics, network ownership would exist on this specific part. How this would work is when the part is far from any players, the physics would be handled by the server until a player gets close to the part, this then causes the player to have full ownership on controlling the physics on that part until the player either disconnected or is far away from the part.

So what’s the solution? I would think is just setting the network ownership of that part to the server using BasePart:SetNetworkOwnership(nil)

Oh. Thanks for your answer!

I missed that part in the post.
SetNetworkOwnership(nil) has already been applied, but it doesn’t make the desired result…

At the beginning of the game, all NetworkOwner of attacks are set to nil