So, I was doing a blood system and I decided to replicate the Blood Flow blood splat system [ A meat ball fly of your body when you get hitted, and when it touchs the floor or wall, the blood splat litteraly stick to the wall / floor. ] but I didn’t get sucess. I did something that really look liked it, but it isn’t veeeryy perfect. [ Footage - Blood warning. ]:
Has you probably see, the blood splat doesn’t stick on the wall, and sometimes it just float, here’s my Script.
Version for Dummies:
local TS = game:GetService('TweenService')
local TweenInfo = TweenInfo.new(1, Enum.EasingStyle.Quint, Enum.EasingDirection.InOut)
local RS = game:GetService('ReplicatedStorage')
local Blood01 = RS.BloodParts.Blood01
local BloodTrail01 = RS.BloodParts.BloodTrail01
local Character = script.Parent
local Humanoid = Character:WaitForChild('Humanoid')
local OldHealth = Humanoid.Health
local BodyParts = {'Left Arm', 'Left Leg', 'Right Arm', 'Right Leg', 'Torso', 'HumanoidRootPart', 'Head', 'Handle'}
Debounce = false
Humanoid.HealthChanged:Connect(function(NewHealth)
local HealthDifference = OldHealth - NewHealth
OldHealth = NewHealth
local NumberOfDrops = HealthDifference / 1
local BloodParts = game:GetService('Workspace').BloodParts
if HealthDifference <= 0 then
return
end
if Debounce == false then
Debounce = true
local BloodTrailClone = BloodTrail01:Clone()
BloodTrailClone.Parent = BloodParts
BloodTrailClone.Position = Humanoid.RootPart.Position
BloodTrailClone.Anchored = false
BloodTrailClone.CanCollide = false
local BodyVelocity = Instance.new('BodyVelocity', BloodTrailClone)
BodyVelocity.MaxForce = Vector3.new(9999999999, 9999999999, 9999999999)
BodyVelocity.P = Humanoid.RootPart.Position
BodyVelocity.Velocity = Vector3.new(math.random(-5, 5), 50, math.random(-5, 5))
wait(0.1)
BloodTrailClone.CanCollide = true
BodyVelocity:Destroy()
BloodTrailClone.Touched:Connect(function(Hit)
BloodTrailClone.Touched:Connect(function(Hit)
local BloodDrop
if Hit.Name ~= 'Blood01' and Hit.Name ~= 'BloodTrail01' and Hit.Name ~= 'Head' and Hit.Name ~= 'Handle' and Hit.Name ~= 'Left Arm' and Hit.Name ~= 'Right Arm' and Hit.Name ~= 'Left Leg' and Hit.Name ~= 'Right Leg' and Hit.Name ~= 'Torso' and Hit.Name ~= 'HumanoidRootPart' and Hit.Name ~= 'ToolMesh' and Hit.CanCollide ~= false and Hit.Transparency == 0 then
BloodTrailClone.Transparency = 1
local BloodDropSize = math.random(0.1 * 10, 2 * 10) / 10
BloodDrop = Blood01:Clone()
BloodDrop.Size = Vector3.new(0, 0, 0)
local PositionX = BloodTrailClone.Position.X + math.random(-10, 10) / 10
local PositionY = BloodTrailClone.Position.Y
local PositionZ = BloodTrailClone.Position.Z + math.random(-10, 10) / 100
BloodDrop.Position = Vector3.new(PositionX, PositionY, PositionZ)
BloodDrop.Parent = BloodParts
BloodDrop.CanCollide = true
BloodDrop.Anchored = false
BloodTrailClone:Destroy()
TS:Create(BloodDrop, TweenInfo, {Size = Vector3.new(0.05, BloodDropSize, BloodDropSize)}):Play()
end
BloodDrop.Touched:Connect(function(Hit)
if Hit.Name ~= 'Blood01' and Hit.Name ~= 'BloodTrail01' and Hit.Name ~= 'Head' and Hit.Name ~= 'Handle' and Hit.Name ~= 'Left Arm' and Hit.Name ~= 'Right Arm' and Hit.Name ~= 'Left Leg' and Hit.Name ~= 'Right Leg' and Hit.Name ~= 'Torso' and Hit.Name ~= 'HumanoidRootPart' and Hit.Name ~= 'ToolMesh' and Hit.CanCollide ~= false and Hit.Transparency == 0 then
BloodDrop.Anchored = true
BloodDrop.Orientation = Blood01.Orientation
BloodDrop.CanCollide = false
end
end)
game:GetService('Debris'):AddItem(BloodDrop, 15)
end)
end)
wait(0.1)
Debounce = false
end
end)
Version for Players:
local TS = game:GetService('TweenService')
local TweenInfo = TweenInfo.new(1, Enum.EasingStyle.Quint, Enum.EasingDirection.InOut)
local RS = game:GetService('ReplicatedStorage')
local Blood01 = RS.BloodParts.Blood01
local BloodTrail01 = RS.BloodParts.BloodTrail01
local BodyParts = {'Left Arm', 'Left Leg', 'Right Arm', 'Right Leg', 'Torso', 'HumanoidRootPart', 'Head', 'Handle'}
local Players = game:GetService('Players')
Debounce = false
Players.PlayerAdded:Connect(function(Player)
Player.CharacterAdded:Connect(function(Character)
local Humanoid = Character:WaitForChild('Humanoid')
local OldHealth = Humanoid.Health
Humanoid.HealthChanged:Connect(function(NewHealth)
local HealthDifference = OldHealth - NewHealth
OldHealth = NewHealth
local NumberOfDrops = math.floor(HealthDifference / 1)
local BloodParts = game:GetService('Workspace').BloodParts
if HealthDifference <= 0 then
return
end
if Debounce == false then
Debounce = true
local BloodTrailClone = BloodTrail01:Clone()
BloodTrailClone.Parent = BloodParts
BloodTrailClone.Position = Humanoid.RootPart.Position
BloodTrailClone.Anchored = false
BloodTrailClone.CanCollide = false
local BodyVelocity = Instance.new('BodyVelocity', BloodTrailClone)
BodyVelocity.MaxForce = Vector3.new(9999999999, 9999999999, 9999999999)
BodyVelocity.P = Humanoid.RootPart.Position
BodyVelocity.Velocity = Vector3.new(math.random(-5, 5), 50, math.random(-5, 5))
wait(0.1)
BloodTrailClone.CanCollide = true
BodyVelocity:Destroy()
BloodTrailClone.Touched:Connect(function(Hit)
BloodTrailClone.Touched:Connect(function(Hit)
local BloodDrop
if Hit.Name ~= 'Blood01' and Hit.Name ~= 'BloodTrail01' and Hit.Name ~= 'Head' and Hit.Name ~= 'Handle' and Hit.Name ~= 'Left Arm' and Hit.Name ~= 'Right Arm' and Hit.Name ~= 'Left Leg' and Hit.Name ~= 'Right Leg' and Hit.Name ~= 'Torso' and Hit.Name ~= 'HumanoidRootPart' and Hit.Name ~= 'ToolMesh' and Hit.CanCollide ~= false and Hit.Transparency == 0 then
BloodTrailClone.Transparency = 1
local BloodDropSize = math.random(0.1 * 10, 2 * 10) / 10
BloodDrop = Blood01:Clone()
BloodDrop.Size = Vector3.new(0, 0, 0)
local PositionX = BloodTrailClone.Position.X + math.random(-10, 10) / 10
local PositionY = BloodTrailClone.Position.Y
local PositionZ = BloodTrailClone.Position.Z + math.random(-10, 10) / 100
BloodDrop.Position = Vector3.new(PositionX, PositionY, PositionZ)
BloodDrop.Parent = BloodParts
BloodDrop.CanCollide = true
BloodDrop.Anchored = false
BloodTrailClone:Destroy()
TS:Create(BloodDrop, TweenInfo, {Size = Vector3.new(0.05, BloodDropSize, BloodDropSize)}):Play()
end
BloodDrop.Touched:Connect(function(Hit)
if Hit.Name ~= 'Blood01' and Hit.Name ~= 'BloodTrail01' and Hit.Name ~= 'Head' and Hit.Name ~= 'Handle' and Hit.Name ~= 'Left Arm' and Hit.Name ~= 'Right Arm' and Hit.Name ~= 'Left Leg' and Hit.Name ~= 'Right Leg' and Hit.Name ~= 'Torso' and Hit.Name ~= 'HumanoidRootPart' and Hit.Name ~= 'ToolMesh' and Hit.CanCollide ~= false and Hit.Transparency == 0 then
BloodDrop.Anchored = true
BloodDrop.Orientation = Blood01.Orientation
BloodDrop.CanCollide = false
end
end)
game:GetService('Debris'):AddItem(BloodDrop, 15)
end)
end)
wait(0.1)
Debounce = false
end
end)
end)
end)
- Tsu Washington / SovietFurryBruh.