.Touched:Connect() calls to early

  1. So im making a snowball game and i want snowball to connect to an object after you throw it , when it touches it. Ive made a throwing script so far, (with linearvelocity) after throwing a snowball it waits for it to touch anything and then i want to connect snowball to the place it touched the part.

  2. The problem is that .Touched event activated to early, and so the snowball welds in the air, some miliseconds before touching the part visually (ive added a video), also i noticed the same if i destroy the snowball on touch, it doesnt touch it visually and destroys before it visually touches.

robloxapp-20221211-0232504.wmv (1.3 MB)

robloxapp-20221211-0233116.wmv (1.2 MB)

part of a script with the event listening;

ammo.Touched:Connect(function(child)
			if child:IsDescendantOf(plr.Character) == false then
				--ammo is the ball itself
				local weld = Instance.new("WeldConstraint",ammo)
				weld.Part0 = ammo
				weld.Part1 = child
            end
end)

image
it connects like that before touching

1 Like

try replacing

if child:IsDescendantOf(plr.Character) == false then 

to

if child.Parent:FindFirstChild("Humanoid") then

You should use FastCast. It has a landing prediction system that’s always accurate. I use it in my game and I’ve never had issues with it.

Also, put the module in ServerStorage or ServerScriptService, it’s unnecessary to put it in the tool

1 Like

Well, i tried getting everything done without fastcast, but suppose its the only way, thank you, but im still trying to make it less complex

1 Like

That is just the opposite what he is trying to do

it looks like its hitting the hitbox of the tree if its a model and connecting to it, also seems like it tries to weld to your hitbox too

no it happens not only to trees as a said same thing happens if i do :Destroy() on touch, it detects in too early it didnt even touch the ground visually but already destroys