Touched event not detecting collisions with terrain

So, I am currently trying to detect collisions between a falling cylinder and the terrain. I have a script in said cylinder that detects this. However, for some ungodly reason, the collision is being detected about 50% of the time. I literally cannot think of a single reason why this would be happening.

Here is the code

script.Parent.Touched:Connect(function(Hit)
	--Some other code that spawns a model at the position of the cylinder
	script.Parent:Destroy()
end)

Something else to note is the fact that when it doesn’t detect the collision, the falling part also somehow falls through the terrain despite both the terrain and the part having collision enabled.

I tested your code out, everything seems to work, when the cylinder touches the terrain it detects it touching it, it must be something in one of your scripts messing with it

For me it would work but only sometimes. I did neglect to mention a couple of things though, such as how I am spawning the cylinder like 100 studs above the terrain.

I have just decided to accept my fate and am going to use other, probably better, methods.