When clicking, my script in a tool uses Target to make sure it is on a part. When it knows it's clicking a part, it goes on to use mouse.Hit.p to create a ray. The ray then makes sure that the part it hits is named after what I want it to be named, and then it fires an event. But, for some odd reason I cant wrap my head around I have to hold my mouse slightly above the part not on it, any explanation as to why or some other methods I could use that function easier or something?
Clip of the problem : https://gyazo.com/054208b4f6f8593b6ced986dfc15f920
The script in the tool:
local Players = game:GetService("Players")
local localPlayer = game.Players.LocalPlayer
local PartTransRequest = game.ReplicatedStorage:WaitForChild("PartTransRequest") -- event for making part transparent
-- grab the mouse
local mouse = localPlayer:GetMouse() -- get mouse
local target = mouse.Target -- get mouse target to check if its clicking a part
Equipped = false -- so the code doesnt repeat when its not equipped
script.Parent.Equipped:connect(function()
Equipped = true
end)
script.Parent.Unequipped:Connect(function()
Equipped = false
end)
mouse.Button1Down:connect(function()
local head = localPlayer.Character:FindFirstChild("Head")
local rayOrigin = script.Parent.Handle.Position
local lookDirection = mouse.Hit.p
print"test 1"
if Equipped == true then
print"test 2"
if target ~= nil then -- if the part is there create a ray
local ray = Ray.new(rayOrigin, lookDirection)
local hitPart, hitPosition = workspace:FindPartOnRay(ray)
print"test 3"
if hitPart then
print"test 4"
if hitPart.Name == "BOBJECT" then do -- if its name is BOBJECT then itll do the event
game.ReplicatedStorage.PartTransRequest:FireServer(hitPart)
end
end
end
end
end
end)
