I’m attempting to make a ‘heal pad’ where it heals you while you’re on top of it, similar to [Overwatch] Soldier: 76’s Biotic Field, but I can’t seem to detect when the player isn’t touching the part. I’ve tried things like putting a BoolValue inside the character and then deleting it when they leave, and it works at first, but then it just starts spam creating/deleting it and eventually gives up. This was done with the TouchEnded event. I don’t know if this is even possible, but I’m sure someone out there knows how.
You should try using Raycasting for this
local HealthPads = workspace.Healthpads; local root_PART = path.HumanoidRootPart; local RaycastParams = RaycastParams.new(); RaycastParams.FilterDescendantsInstances = HealthPads:GetChildren(); RaycastParams.FilterType = Enum.RaycastFilterType.Whitelist; game:GetService("RunService").RenderStepped:Connect(function() local castResults = workspace:Raycast(root_PART.CFrame.p, vector3.new(0,-20,0), RaycastParams); if(castResults)then --<Is "Touching" Part; else --<Not "Touching" Part end; end);
I’ve never actually used raycast params, but i’m pretty sure castResults will be nill if it doesn’t hit, if not, you can use castResults.Instance
Maybe you could try using the :GetTouchingPart in your script and then just doing an if and else function.
Could you tell me a bit about the ray? I’m guessing it sends a box striaght up to see if there’s a player?
local Field = script.Parent local FieldBeingTouched = false Field.Touched:Connect(function(hit) local Humanoid = hit.Parent:FindFirstChildWhichIsA("Humanoid") if Humanoid then FieldBeingTouched = true while FieldBeingTouched == true do Humanoid.Health = Humanoid.Health + 5 wait(0.2) end end end) Field.TouchEnded:Connect(function(hit) local Humanoid = hit.Parent:FindFirstChildWhichIsA("Humanoid") if Humanoid then FieldBeingTouched = false end end)
Are you sure that works? Thats pretty much exactly what I did.
Can you show us the script?
.Touched events should work unless something’s wrong.
I deleted the script when I was messing with it, but it was something like
heal = false
Yes, I tested it out, it works perfectly fine.
Have you tried it?
No, actually, I just don’t want to use more time than I need to, this is one of my biggest projects and I want to finish it. Not that I don’t have time for testing your ideas, but I just want to be able to make a lot of progress.
So you didn’t try my code that works?
I am now. I’m surprised it functions when mine didn’t. There are a couple differences but for the most part it seems the same to me.
So if it worked, give a solution, so people know that’s its solved.
Maybe try Region3 or magnitude?