Scripting Helpers is winding down operations and is now read-only. More info→
Ad
Log in to vote
0

Part.Touched "hit" Part has incorrect name?

Asked by 6 years ago
local function OnExplosionHit(hitPart, hitDistance, blastCenter)
    local character, humanoid = FindCharacterAncestor(hitPart.Parent)

    print(hitPart.Name) 

    if hitPart.Name == "CenterPart" then return false end

    if humanoid and humanoid.Health > 0 then
        if hitPart.Name == 'HumanoidRootPart' then
            humanoid:TakeDamage(100)
        end
    elseif hitPart.Parent:FindFirstChild("CannonballHit") ~= nil then
        print("Found Function")
        print(tonumber(hitPart.Name))   
        if tonumber(hitPart.Name) ~= nil then
            if hitPart.Parent.CannonballHit:Invoke( tonumber(hitPart.Name), script:FindFirstChild('Damage').Value ) then
                hitPart:BreakJoints()
                local blastForce = Instance.new('BodyForce', hitPart)
                blastForce.force = (hitPart.Position - blastCenter).unit * script:FindFirstChild('BlastForce').Value * hitPart:GetMass()
                game.Debris:AddItem(blastForce, 0.1)
            end
        end
    end
end

cannonball.Touched:connect(function(other)
    local explosion = Instance.new("Explosion")
    explosion.BlastPressure = 0
    explosion.ExplosionType = Enum.ExplosionType.NoCraters
    explosion.BlastRadius = 1
    explosion.Position = cannonball.Position    
    explosion.Parent = cannonball

    local connection = explosion.Hit:connect(function(hitPart, hitDistance) print(hitPart.Name) OnExplosionHit(hitPart, hitDistance, explosion.Position) end)
    wait(.1)
    cannonball:Destroy()
end)

When the cannonball hits a part, even one I deliberately renamed to test it out. It always prints the name "Part" and the parent is always "workspace" even if the part is in a model. I have no idea why it is doing this? If anyone can point out what I'm doing wrong I would appreciate it.

Answer this question