Help On Making A Complete Blood System

So i’ve been seeing a lot of games now having a pretty neat blood system and i wanted to implement the same system to my game i tryed making it but it’s too hard for me. here are 2 showcases of what i’m talking about :

As you can see the player either plays an animation when he is very hurt or his body parts just drop , And if you notice the blood balls fly from the body to somewhere then when they collide they stick to the part they collided with and become a blood splatter. (Hopefully it’s understandable and thx in advance!)

5 Likes

Probably this topic would help, I haven’t tried it. Also try searching on Google about it. For the blood particles, I don’t know what to say.

Ok i’ll check the link and see if it’s what i’m looking for and for the blood particles(it’s okay at least you helped me out!)

Not exactly what i was looking for but thx for the help!

Any other suggestions would be apreciated!

This could be considered excessive gore.

1 Like

Wait if this is excessive gore why does pretty popular games use it without getting any ban ?

I’m just giving a heads up just in-case it happens.

1 Like

I have kinda similar blood system that can be turned on in my game:

Here’s what i did (I will just tell how is it): (You can change anything you want)

I created remote event in ReplicatedStorage and called it “GoreEvent”

I made BloodPuddle part inside ReplicatedStorage.Misc that is part with special mesh: sphere
and there is local script:
image

wait()
game:GetService("TweenService"):Create(script.Parent, TweenInfo.new(math.random(0,20)/10), {Size = Vector3.new(math.random(10,250)/10, 0.14, math.random(10,250)/10)}):Play()
wait(6)
game:GetService("TweenService"):Create(script.Parent, TweenInfo.new(1), {Transparency = 1}):Play()
wait(1)
script.Parent:Destroy()


I made BloodDrip part inside ReplicatedStorage.Misc
BloodDrip is a sphere with 0.1 size and local script inside:
image

game:GetService("RunService").RenderStepped:Connect(function()
	local params = RaycastParams.new()
	params.FilterType = Enum.RaycastFilterType.Blacklist
	local t = {script.Parent, script.Parent.Parent}
	--for i,v in pairs(workspace:GetChildren())do
	--	if v:IsA("Instance") then
	--		table.insert(t, #t+1, v)
	--	end
	--end
	params.FilterDescendantsInstances = t
	local ray = workspace:Raycast(script.Parent.Position, Vector3.new(0,-1,0), params)
	if ray then
		if ray.Instance.Anchored == true and ray.Instance.CanCollide == true then
			local s = game.ReplicatedStorage.MiscObjects.BloodPuddle:Clone()
			s.Parent = script.Parent.Parent
			s.Color = script.Parent.Color
			s.Position = ray.Position
			script.Parent:Destroy()
		end
	end
end)


I have local script in StarterCharacterScripts:

game.ReplicatedStorage.GoreEvent.OnClientEvent:Connect(function(amount, pos)
	--if game.Players.LocalPlayer:FindFirstChild("Gore") then --If player has Gore enabled
		for i = 1,amount do
			local d = game.ReplicatedStorage.MiscObjects.BloodDrip:Clone()
			d.Parent = script.Parent
			d.Position = pos+Vector3.new(0,3,0)
			d.Velocity = Vector3.new(math.random(-75,75), math.random(0,75), math.random(-75,75))
			game.Debris:AddItem(d,5)
		end
		if math.random(1,3) == 1 then
			local meat = game.ReplicatedStorage.MiscObjects.Meat:Clone()
			meat.Parent = workspace
			meat.CFrame = CFrame.new(pos+Vector3.new(0,3,0))
			if math.random(1,5) == 1 then
				meat.Bone.Transparency = 0
			end
			meat.Size = Vector3.new(math.random(10,20)/10,math.random(10,20)/10,math.random(10,20)/10)
			meat.Velocity = Vector3.new(math.random(-75,75), math.random(0,75), math.random(-75,75))
			game.Debris:AddItem(meat, 3)
		end
	--end --End related to check if player has Gore enabled
end)


And so, you can just call GoreEvent from server like this:

--Server Script = Not Local
GoreEvent:FireAllClients(10, position) --10 is amount of blood and position is from where the blood goes

I hope it helped you, if you can’t understand something, im on way to answer.

5 Likes

Or just use this, nvm my prev reply: BloodSystem by R0mAAn - Roblox

1 Like

What’s the difference between this system and yours?

Both are mines but i just made model so you shouldn’t re-write this all, just use model.

1 Like

Ok thank you very much i’ll get the model and see if it’s what i’m looking for.

1 Like

Btw, it’s okay if it’s not what you looking for, i just wanted to help. Anyways, thats how forum works. I will not feel sad if you will not use this. Just… yea.

2 Likes

Hey i got a question does this work when you die or just when you receive damage?(For some reason it doesn’t work)I did all the instructions given

You should call this event. If you want it on death then do this:

--Put Script inside StarterCharacterScripts
script.Parent.Humanoid.Died:Connect(function()
	game.ReplicatedStorage.GoreEvent:FireAllClients(10, script.Parent.HumanoidRootPart.Position)
end)
2 Likes

Hey for some reason it doesn’t work can you test your model and see if it works for u?

1 Like

I’m gonna check now and see if there’s any errors etc. Gonna tell you what to do, or just gonna re-write model. Gimme a while

2 Likes

All is fine, can you show me how you call this event? Gonna change blood radius tho

https://gyazo.com/5bd858d2834c290a25bb52b280a0bbb3
https://gyazo.com/1d62752447f9ac72c2ebf1a41afc67bf

Okay, uploaded new version of this system: BloodSystem by R0mAAn - Roblox

Also, just a mini tutorial how to call blood:

Put this line inside of Server Script (Like, just Script) in workspace or any script you have.

local pos = --Position where the blood goes from. You can type here workspace.YourName.Head.Position
game.ReplicatedStorage.GoreEvent:FireAllClients(10, pos)
7 Likes