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

How can I make consistent melee hitboxes?

Asked by 4 years ago

I'm working on a barrage type attack that spawns many hitboxes that do a set amount of damage, but some of the hitboxes simply don't register contact despite them clearly hitting the target. I have a local script calling the server script below repeatedly when the player holds down E. The barrage is supposed to do 60 damage out of a total of 100 default health, but the actual damage numbers vary. The longer I make the delay for the Debris Service the more accurate the hit detection is, but the hitboxes can't just linger there for longer than they appear and it still isn't perfect.

game.ReplicatedStorage.Stand.Events.Barrage.OnServerEvent:Connect(function(player)
    -- definitions
    db = false

    -- hitbox properties
    hitBox = Instance.new("Part", workspace)
    hitBox.Transparency = 0.5
    hitBox.CanCollide = false
    hitBox.Massless = true
    hitBox.Size = Vector3.new(5,4,5)
    hitBox.CFrame = player.Character.LowerTorso.CFrame * CFrame.new(0, 1, -4)
    hitBox.TopSurface = 0
    hitBox.BottomSurface = 0

    -- weld
    local weld = Instance.new("Weld")
    weld.Part0 = player.Character.HumanoidRootPart
    weld.Part1 = hitBox
    weld.C0 = CFrame.new(0,0,-3)
    weld.Parent = player.Character.HumanoidRootPart

    -- Timed Destruction
    game:GetService("Debris"):AddItem(hitBox, 0.4)

    -- hitBox player interaction
    hitBox.Touched:Connect(function(hit)
        print("player hit")
        local ehum = hit and hit.Parent:FindFirstChild("Humanoid") or hit.Parent:FindFirstChild("Humanoid")

        if ehum and ehum ~= player.Character.Humanoid then
            if not db then

                db = true
                ehum:TakeDamage(2)
                local walkspeed = hit.Parent.Humanoid.WalkSpeed
                hit.Parent.Humanoid.WalkSpeed = 4
                wait(0.4)
                hit.Parent.Humanoid.WalkSpeed = walkspeed

            end
        end

    end)

end)

If you don't understand what I mean, join the game for yourself: https://www.roblox.com/games/4907040843/Untitled-lemark23-Project?refPageId=4fd71c98-003e-4206-8fa8-d4189f60b3f8

Answer this question