Hey there, I am trying to script a relatively simple bullet script for a (kinda) gun.
I am having problems with my bullet script tho ;( Or to be more precise: The script that registers when the bullet touches something, and if it is a humaniod - and so on.
Atm, I have two scripts:
The "GunKeyPressing script" (where there shouldn't be a problem), is a Local Script in the Starterpack that registers whenever I click the "f" key, and then clones a bullet, parents it to the Workspace (and so on). And then I have the "BulletDamage script", which is the one I am having trouble with. It gets successfully transported and enabled inside the bullet (I have it disabled until it is parented to the bullet-part - then I enable it), but the script itself doesn't actually seem to work (I tried setting a print-statement at the top of the script). Atm, I have it stored under the GunKeyPressing script (which was in the Starterpack), but I have also tried storing it in the ServerScriptService and ReplicatedStorage - without much luck either.
Here is the GunKeyPressing script (which I don't think there is anything wrong with):
local player = game.Players.LocalPlayer
local mouse = player:GetMouse()
local bullet = game.ReplicatedStorage:FindFirstChild("Bullet") -- the actual bullet (just a black ball)
local bodyForce = bullet.BulletBodyForce
local barrel = game.Workspace.PlaneGun.Barrel
bodyForce.Force = barrel.CFrame.LookVector * 400
local cooldown = false
mouse.KeyDown:Connect(function(key)
if key == "f" then
if cooldown == false then
if bullet then -- if we found the bullet in "ReplicatedStorage"
cooldown = true
local bulletCopy = bullet:Clone()
local bulletDamage = script:FindFirstChild("BulletDamage") -- as I mentioned, the "BulletDamage script" is parented to the "GunKeyPressing Script".
game.Debris:AddItem(bulletCopy, 100)
bulletCopy.Parent = game.Workspace
bulletCopy.Position = game.Workspace.PlaneGun.FirePosition.Position -- we are just positioning the bullet.
if bulletDamage then
local bulletDamageCopy = bulletDamage:Clone()
bulletDamageCopy.Parent = bulletCopy
bulletDamageCopy.Disabled = false -- And then we activate it after having moved it (it started of by being disabled).
end
wait(0.5) -- cooldown time
cooldown = false
else
print("Bullet was not found")
end
end
end
end)
And now to "BulletDamage" script, where the script doesn't wanna run:
print("hi") -- just to test if there is any contact (which there is not atm)
if script.Disabled == false then
script.AncestryChanged:Connect(function () -- I never used this function before, so I might have used it incorrectly.
if script.Parent.Name == "Bullet" then
local bulletCopy = script.Parent
bulletCopy.Touched:Connect (function (hit)
local humaniod = hit.Parent:FindFirstChild("Humaniod")
local firePos = hit.Parent:FindFirstChild ("FirePosition") -- This is just the part where the bullet "spawns", so I don't wanna make that count as a touch.
if not firePos then
if humaniod then
-- insert stuff
end
end
end)
end
end)
end
Thanks in advance! Any kind of help is much appreciated :-)
