Blood Engine - A droplet emitter system

Oopsies I didn’t think anyone would put it in StarterCharacterScripts. I’ll add a destroy method right away.

Blood Engine • V1.1.2

↳ General Changes

A new Destroy method: Added a Destroy method, that I admit should have been there in the beginning. This is for developers who especially use StarterCharacterScripts. (Reference to issue: Blood Engine - A droplet emitter system - #233 by Lukeskyroblox1)

3 Likes

This gives me an error. I’m trying to use it in my NPC.

local bloodEngine = require(game.ReplicatedStorage:WaitForChild("BloodEngine"))
local Humanoid = script.Parent:WaitForChild("Humanoid")
local OldHealth = Humanoid.Health
local player = game.Players.LocalPlayer
local char = player.Character or player.CharacterAdded:Wait()

local Engine = bloodEngine.new({
	Limit = 60, -- Sets the maximum number of droplets that can be created.
	Type = "Decal", -- Defines the droplet type. It can be either "Default" (Sphere) or "Decal",
	RandomOffset = false, -- Determines whether a droplet should spawn at a random offset from a given position.
	OffsetRange = {-20, 10}, -- Specifies the offset range for the position vectors.
	DropletVelocity = {1, 2}, -- Controls the velocity of the emitted droplet.
	DropletDelay = {0.05, 0.1}, -- Sets the delay between emitting droplets in a loop (for the EmitAmount method).
	StartingSize = Vector3.new(0.01, 0.7, 0.01), -- Sets the initial size of the droplets upon landing.
	Expansion = false, -- Determines whether a pool can expand when a droplet lands on it.
	MaximumSize = 1, -- Sets the maximum size a pool can reach.
})

Humanoid:GetPropertyChangedSignal("Health"):Connect(function()
	local Instances = Engine.RaycastParams.FilterDescendantsInstances
	Engine.RaycastParams.FilterDescendantsInstances = {Instances and unpack(Instances), char}
	
	if Humanoid.Health < OldHealth then
		Engine:EmitAmount(script.Parent:FindFirstChild("Torso"), nil, 10)
	end

	OldHealth = Humanoid.Health
end)
Workspace.Respawning Dummy.Blood:20: attempt to index nil with 'FilterDescendantsInstances'

You can’t access the internal params, just the filter. Try using this:

Humanoid.HealthChanged:Connect(function()
	Engine:UpdateSettings({
		Filter = {Humanoid.Parent}
	})
	
	if Humanoid.Health < OldHealth then
		Engine:EmitAmount(Humanoid.RootPart, nil, 10)
	end

	OldHealth = Humanoid.Health
end)
1 Like

guys, is there’s a way to make it not collide to a specific player?

nice blood system, but for some reason sometimes the blood doesn’t become flat as it should.
how i can fix that issue?
Снимок экрана 2024-09-26 184920

1 Like

This is interesting almost makes me want to release mine


image

The general tech I made for this is to make puddles that combine together if they land in the same position using a hash-grid method.

2 Likes

Check the newest version [1.1.3] out, it introduces the YSize options which should help your case.

thank you so much! but either I’m stupid or I forgot to do something, but I don’t see any difference after I made splats too flat


If you want the pools to always be flat, set the range to { 0.001, 0.001 }, or { 0.001, 0.005 } if you want some randomness.

1 Like

it’s worked! thanks for this best bloody module!


(If you need any ideas, here they are: make the spots disappear automatically after a certain time when the blood-creator script is destroyed, or without this function, the blood will remain FOREVER on the map and will not disappear) - I don’t know English well and may have made some mistakes in the text)

You can’t just destroy the blood script because that basically pauses any operations going on in the script, basically making the blood stay forever.

Why does the droplets show up as a square not like the meshes shown?

figured it out* for some reason wally installs it without the mesh id.

If anyone needs the droplet mesh ID: rbxassetid://15372969595

Yeah, I’m pretty sure thats an issue on Wally’s or Rojo’s end. I’ve tried making the Mesh IDs integrated but you cant change IDs in real-time.

Hello, this looks like a cool module, but why is the model on roblox not available?

Probably because I got banned, let me reactivate my account in a bit.

2 Likes

Blood Engine • V1.1.2

I kind of forgot to post this

↳ General Changes

A new size setting: Added a new setting: YSize, which controls the range of the y size of the pool, giving you the ability to make it flat or thick. (Reference to suggestion: Blood Engine - A droplet emitter system - #239 by RIP_Bombs)

Hey, It’s me, do you mind people using your textures? I ask this because it would seem like 4 of your textures have been content deleted recently.

1 Like

They’re not my textures but they’re pretty much public, I did find that some of them got content deleted but who cares, I’ll just delete them entirely from the engine.