you could just put a kill brick under the map
Yes, but the “Dead” state isn’t firing, since the humanoid is still regenerating health points, meaning it’s still on a running state and ultimatly didn’t changed its state.
Check if any body parts of the body became nil, then reload the player again
I could but this would be inefficient. The whole map does ~16384 studs meaning I would have to place ~8 blocks of a size of 2048 studs, and if the player goes fast enough, he can get through this brick.
so add a check for if the humanoidrootpart Y position is low enough, load character
Okay so i got this:
local voidHeight = workspace.FallenPartsDestroyHeight
local players = game:GetService("Players")
local player = players.LocalPlayer or players.PlayerAdded:Wait()
local character = player.Character or player.CharacterAdded:Wait()
local hmr = character:WaitForChild("HumanoidRootPart")
hmr:GetPropertyChangedSignal("Position"):Connect(function()
if hmr.Position.Y <= voidHeight then
print("Player died from falling into the void!")
else
print("Player died but did not fall into the void!")
end
end)
Same here, if the player goes fast enough, this can be problemtic.
I used it before. And if the player goes atleast at -1500 studs (Y velocity) he can get through this condition, allowing him to touch the fallen parts destroying height.
I think you’re thinking a little too deep. How would the player get that fast? You should just ensure theres no way for the player to even end up falling into the void.
PropertyChangedSignal for Position or AssemblyLinearVelocity isn’t firing properly. It’s better to use it in a condition in a RenderStep. But I also tried that. This isn’t really efficient because the player can go faster than the delta time between each frame that check the condition
Thanks for the time though.
I gave u a basic outline of what u can do, u can edit the script to work for u as u want
Yes but this would kill the “Roblox” aspect for the game. But it’s fine I just use the PropertyChangedSignal
method for the “Parent” of the HumanoidRootPart to check if its parent has been changed to nil using :Destroy
I don’t think the void will trigger any destroy events.
It does. Since it destroys any parts that goes beyond this height, the Parent of each part is set to nil which leads to the part deletion.
I have noticed alot of people had this problem tho.
but i found an old solution of mine, maybe check it
Hello! I did a little research on your topic and found out that if the RequiresNeck
property of Humanoid
is false
, you should set it to true
. Try this, it should solve your problem! Also make sure that the Motor6D named Neck is disabled after its Part0
and Part1
are directly connected by some hard physical connection and vice versa. Otherwise the character is dead…
If it doesn’t help, then I think you need to use something like the code I’ve provided below. This script checks if the root part of the character has a Parent
. If the Parent
is missing from the root part, the player character is automatically loaded after the RespawnTime
value in the Players
service
local Players = game:GetService('Players')
Players.PlayerAdded:Connect(function(Player)
Player.CharacterAdded:Connect(function(Character)
local Humanoid: Humanoid = Character:WaitForChild('Humanoid')
local CharacterRootPart = Humanoid.RootPart
CharacterRootPart:GetPropertyChangedSignal('Parent'):Connect(function()
if CharacterRootPart.Parent ~= nil then return end
task.wait(Players.RespawnTime)
Player:LoadCharacter()
end)
end)
end)
Wow thanks ! It is because my Ragdoll module sets it to false
but I never realized it. After 2 years with this problem, it is finally fully fixed !
Mark this as solution then so that they can immediately find what needs to be done. Good luck, glad to help you!
Oh weird? On my screen it says it already has been marked as solved.
The site didn’t updated I think. Check if it works now
Yes, it has appeared! Keep working on your game.