Issue with terrain and tools need help please

Hi, I run through an issue with tool that falling through the terrain but not on base parts, sometimes if I drop the tool it fall through the terrain and fall to the void even the CanCollide was set to true and every Collision group is set to default, I have this issue last few days I try to make it ticker but still goes through the terrain and the thing is, it is fine on baseplate. I don’t know if it just me or the terrain has a bug I don’t know.

this is my video showing what is the issue looks like:
Video part 1:

Video part 2:


(Sorry I have to cut the video because the file size is bit big)

the Collision group is set to default and the CanCollide is on.


here is the script I used just in case:

> local Tool = script.Parent
> 
> local Prox = Tool:FindFirstChild("StorageKey", true)
> 
> -- Folder in workspace -----------------------------------
> local KeyFolder = game.Workspace:WaitForChild("KeyFolder")
> 
> Prox.Triggered:Connect(function(plr)
> 	
> 	if #plr.Backpack:GetChildren() >= 2 then
> 		if plr.Character:FindFirstChildWhichIsA("Tool") then
> 			plr.Character:FindFirstChildWhichIsA("Tool").Parent = KeyFolder
> 		else
> 			local tool = plr.Backpack:GetChildren()[1]
> 			plr.Character:FindFirstChildWhichIsA("Humanoid"):EquipTool(tool)
> 			wait(0.5)
> 			print(tool.Name)
> 			plr.Character:FindFirstChildWhichIsA("Tool", true):FindFirstChildWhichIsA("ProximityPrompt",true).Enabled = true
> 			plr.Character:FindFirstChildWhichIsA("Tool").Parent = KeyFolder
> 			--plr.Character:FindFirstChildWhichIsA("Tool"):FindFirstChild("Handle",true).CFrame = plr.Character:WaitForChild("HumanoidRootPart").CFrame * CFrame.new(0,0,-4)
> 		end
> 	end
> 	
> 	Tool.Parent = plr.Backpack
> 	Prox.Enabled = false
> end)