Blood Engine - A droplet emitter system

Great module! :tada:

I’d like to add something for those who have lesser scripting skills. If you would like to ignore player parts do:

local Instances = BloodInstance.RaycastParams.FilterDescendantsInstances
BloodInstance.RaycastParams.FilterDescendantsInstances = {Instances and unpack(Instances), character}

Here’s my full script

-- You can leave any of these values as nil, it'll use the default values
local DripSettings = {
	500, -- Limit: The maximum number of blood drips that can be active at once
	true, -- RandomOffset: Whether to use random positions for the blood drips
	0.5, -- Speed: The speed or velocity at which the blood drips fall
	0.01, -- DripDelay: The delay between emitting blood drips,
	false, -- DripVisibile: Determines if the blood drip is visibile when emitted
	{} -- Filter: An array used to make the drips ignore certain parts (go through them, not interact with them)
}

-- MODULES
local BloodEngine = require(game.ReplicatedStorage.BloodEngine)
local BloodInstance = BloodEngine.new(table.unpack(DripSettings)) -- customize to whatever you want

game.Players.PlayerAdded:Connect(function(player)
	player.CharacterAdded:Connect(function(character)

		local Instances = BloodInstance.RaycastParams.FilterDescendantsInstances
		BloodInstance.RaycastParams.FilterDescendantsInstances = {Instances and unpack(Instances), character}

		local humanoid = character:WaitForChild("Humanoid") :: Humanoid?

		local root = character:WaitForChild("HumanoidRootPart")

		humanoid.Died:Once(function()
			BloodInstance:Emit(root, root.CFrame.LookVector, 100) -- also customize to whatever you want
		end)

	end)
end)
13 Likes