Hitbox Script | PREMIUM |

function HitboxModule:OnHit(character, hitPart) -- override for custom logic (sound, vfx, etc.) print( Hit {character.Name} for {self.Damage} damage ) end

public void Deactivate() { isActive = false; } hitbox script

return HitboxModule

local HitboxModule = require(script.Parent.HitboxModule) local swordPart = script.Parent local owner = script.Parent.Parent.Parent -- assume character public GameObject owner

-- when swinging hitbox:Activate() task.wait(0.3) -- swing duration hitbox:Deactivate() public class Hitbox : MonoBehaviour { public float damage = 10f; public GameObject owner; private bool isActive = false; private HashSet<GameObject> hitTargets = new HashSet<GameObject>(); public void Activate() { isActive = true; hitTargets.Clear(); } private bool isActive = false

function HitboxModule:Deactivate() self.Active = false if self.Connection then self.Connection:Disconnect() self.Connection = nil end end

self.Part = hitboxPart self.Damage = damage or 10 self.Owner = owner self.Active = false self.HitCharacters = {} -- track already hit characters