Hello, DevFourm! I am having trouble scripting a button that can add a ForceFeild onto a part. I don’t know how to explain it with just text so here’s a video of what is happening:
Here is the script that all of the buttons use:
(The fire button for example)
local Part = game.Workspace:WaitForChild("Color_Part")
local Click = script.Parent.ClickDetector
Click.MouseClick:Connect(function()
local Fire = Instance.new("Fire")
Fire.Parent = Part
Fire.Position = Part.Position
end)
local Sound = script.Parent.Click
Click.MouseClick:Connect(function()
Sound:Play()
end)
Click.MouseClick:Connect(function()
if Part:WaitForChild("Fire") then
local Props = script.Parent.Prop.SurfaceGui.TextLabel.Text
Props = "You Already Have Fire!"
else
local Props = script.Parent.Prop.SurfaceGui.TextLabel.Text
Props = "Added!"
end
end)
Thanks for your help!
(And an error might show up in the output so ignore it. It’s just about how “Position” isn’t a valid member of Part, but I mean the property “Position” and the game understands that. I think that might be the problem with the FoceFeild but I wouldn’t know how to debug it.)
Do you mean that you want to create a forcefield instance within a part?
I’m a bit confused about your request. If you could upload the .rbmx file, I would be happy to take a closer look and load it into Roblox for you. Of course, only if you’re comfortable with that!
Since forcefields are meant for players and not parts, scripting this feature can pose several challenges. The best approach I found is to assign a humanoid to your part and relocate the part from the baseplate to the part with the humanoid itself. This ensures that even if you apply the forcefield to the part with the humanoid, it won’t be visible at the spawn location (0,0,0).
It’s crucial to maintain consistency in your naming conventions. Incorrectly named objects can lead to confusion for both you and anyone attempting to troubleshoot the issue. I hope that the newly named local variables will provide more clarity in your coding journey, and may this solution prove helpful for your future game!
If there are any questions, feel free to ask!
Here is the updated script:
-- Locals
local Model = script.Parent
local OnClick = Model.OnclickPart:WaitForChild("ClickDetector")
local Sound = Model.OnclickPart:WaitForChild("Sound")
OnClick.MouseClick:Connect(function()
-- Locals
local Part = Model.Object:FindFirstChild("Part")
-- Validation
if Part == nil then
print("Part does not exist yet")
return
end
if Part:FindFirstChild("ForceField") then
print("Part already has a ForceField")
return
end
-- end of validation
-- Actual script
Sound:Play()
print("ForceField Added!")
-- instance new a forcefield and set on the baseplate and then move it toward the part
local ForceField = Instance.new("ForceField")
ForceField.Parent = workspace.Baseplate
task.wait(0.1) -- MUST HAVE
ForceField.Parent = Part
end)