Beheers de kill: hoe maak je een kill-onderdeel in Roblox Studio?
Om een Kill Part in Roblox Studio te maken , plaats je een Part in je level, voeg je er een server-side Script onder toe en gebruik je de Touchedevent van de Part om de Humanoid van een speler te vinden en uit te schakelen. De onderstaande setup bevat een controle die alleen op de speler van toepassing is, een eenvoudige afkoelperiode en een ForceField-controle, zodat de val de spawnbeveiliging niet opheft.
Deze Roblox kill brick is geschikt voor obbies, hazard rooms en andere uitdagingen waarbij een speler gereset wordt zodra hij een oppervlak aanraakt. Je kunt het onderdeel ook onzichtbaar maken of aanpassen zodat het spelers schade toebrengt in plaats van ze te elimineren.
Voordat je de dodelijke steen bouwt
- Open Roblox Studio en maak een nieuwe plek aan of open een bestaande plek.
- Zorg ervoor dat de panelen Verkenner en Eigenschappen zichtbaar zijn. U kunt ze inschakelen via het menu Weergave van Studio als ze verborgen zijn.
- Gebruik een testomgeving of een privékopie terwijl je de val bouwt en test.
Het script hoort thuis in het Hazard-gedeelte van Workspace. De standaardversie van Roblox Scriptdraait op de server vanuit Workspace; een script LocalScriptis niet de juiste keuze voor deze configuratie. Zie de Roblox-handleiding voor scripttypen en -locaties .
Stap 1: Maak en configureer het gevarenonderdeel
- Voeg een basisonderdeel in vanuit de gereedschappen Start of Model. Hernoem het in Verkenner naar een herkenbare naam, bijvoorbeeld
KillPart.
- Verplaats het naar de gevaarlijke plek. Gebruik het paneel Eigenschappen of de schaaltools van Studio om een formaat in te stellen dat spelers duidelijk kunnen zien en bereiken. Een brede, smalle tegel kan bijvoorbeeld de landingsplaats van een hindernisbaan bedekken.
- Stel Anchored in op true zodat de val op zijn plaats blijft. Houd CanTouch ingeschakeld; de aanraakgebeurtenis werkt niet als aanraakdetectie is uitgeschakeld.
- Kies een kleur en materiaal die gevaar uitstralen, zoals rood of oranje. Als het blok spelers moet tegenhouden, laat CanCollide dan ingeschakeld. Als het een verborgen triggervolume is, kun je CanCollide uitschakelen terwijl CanTouch ingeschakeld blijft.
TouchedEen verankerd kill brick kan nog steeds een bewegend personage detecteren. Roblox merkt op dat twee verankerde onderdelen elkaar niet triggeren , dus test dit door een personage over het onderdeel te bewegen in plaats van twee stilstaande blokken tegen elkaar te plaatsen. De BasePart.Touched-referentie legt het gedrag van de gebeurtenis en de aanraakvereisten uit.
Stap 2: Voeg een server-side kill-script toe
- Klik in Verkenner met de rechtermuisknop op het onderdeel
KillPart, voeg een script in Scripten controleer of het script als een onderliggend element van het onderdeel wordt weergegeven.
- Open het script, verwijder de startcode en plak deze versie erin:
local Players = game:GetService("Players")
local trap = script.Parent
local hitCooldown = {}
trap.Touched:Connect(function(hit)
local character = hit:FindFirstAncestorOfClass("Model")
if not character then
return
end
local player = Players:GetPlayerFromCharacter(character)
if not player then
return -- Remove this check if the trap should also kill NPCs.
end
local humanoid = character:FindFirstChildOfClass("Humanoid")
if not humanoid or humanoid.Health <= 0 then
return
end
-- Keep Roblox spawn protection intact.
if character:FindFirstChildOfClass("ForceField") then
return
end
if hitCooldown[humanoid] then
return
end
hitCooldown[humanoid] = true
humanoid.Health = 0
task.delay(1, function()
hitCooldown[humanoid] = nil
end)
end)
TouchedHet script registreert het specifieke lichaamsdeel of accessoire dat contact maakte, niet het personagemodel zelf. Het script doorloopt daarom het betreffende model, zoekt naar een humanoïde en gebruikt deze Players:GetPlayerFromCharacter()om de toegang tot de speler te beperken. De afkoelperiode voorkomt dat meerdere lichaamsdelen hetzelfde contact herhaaldelijk verwerken.
Het script controleert op een ForceField voordat de gezondheid op nul wordt gezet. Direct instellen Humanoid.Healthkan de ForceField-bescherming omzeilen; de expliciete controle behoudt de spawn-bescherming voor deze val. Voor gewone schade die rekening moet houden met een ForceField, gebruik je humanoid:TakeDamage(25)in plaats van de gezondheidstoewijzing. Roblox beschrijft dit gezondheidsgedrag in de Humanoid-referentie en de ForceField-referentie .
Stap 3: Test het Kill-gedeelte
- Start een Studio-speeltest met de Play-knop en laat je personage het gevaar betreden.
- Controleer of het personage is uitgeschakeld en opnieuw verschijnt volgens de spawninstellingen van de locatie.
- Stop de test, pas het onderdeel of script aan en test opnieuw. Controleer het uitvoerpaneel op scriptfouten als er niets gebeurt.
- Als het om een multiplayer-ervaring gaat, gebruik dan de server- en clienttestopties van Studio om het resultaat ook vanuit een clientsessie te bevestigen. De handleiding voor testmodi van Roblox Studio beschrijft de beschikbare testopstellingen.
Test zowel het zichtbare blok als het daadwerkelijke pad dat het personage erdoorheen loopt. Een val kan de indruk wekken dat hij de vloer overlapt, terwijl hij zich iets boven of onder de route bevindt. Pas de positie van de val aan als het personage erdoorheen loopt zonder contact te maken.
Nuttige variaties
Creëer een onzichtbare dodelijke zone.
Stel Transparantie in op 1 en CanCollide op false, maar laat CanTouch ingeschakeld. Dit creëert een verborgen triggergebied zonder een onzichtbare muur te maken. Plaats het zorgvuldig en test het vanuit het perspectief van de speler, zodat de zone eerlijk aanvoelt.
Zorg ervoor dat de val NPC's kan beïnvloeden.
Het voorbeeldscript negeert opzettelijk NPC's door terug te keren wanneer GetPlayerFromCharacter()er geen speler wordt gevonden. Verwijder deze spelercontrole als NPC-modellen met humanoïde kenmerken ook de val moeten activeren. Behoud de controles op humanoïde kenmerken en gezondheid, zodat irrelevante objecten worden genegeerd.
Gebruik schade in plaats van een directe eliminatie.
Vervang dit humanoid.Health = 0door een element humanoid:TakeDamage(25)om het onderdeel een schadelijk gevaar te maken. Pas de hoeveelheid aan je spel aan en test het vervolgens met een speler die een krachtveld heeft, zodat je kunt controleren of de spawnbeveiliging naar behoren werkt.
Probleemoplossing voor Kill Part
| Wat gebeurt er? | Wat moet je controleren? |
| De val heeft geen effect. | Controleer of het script zich onder het onderdeel bevindt, of het object een script is en geen LocalScript, of CanTouch is ingeschakeld en of het personage het onderdeel fysiek aanraakt. |
| Het uitvoerpaneel geeft een fout weer. | Controleer de spelling, de aanhalingstekens en of de code onder de waarschuwing in het script is geplakt. |
| Spelers passeren een onzichtbare val. | Voor een triggerzone mag CanCollide uitgeschakeld zijn, maar CanTouch moet ingeschakeld blijven. Controleer of de zone de route van de speler omvat. |
| NPC's worden niet beïnvloed. | Het voorbeeld is alleen voor spelers. Verwijder de GetPlayerFromCharacter-controle als er ook NPC's in moeten worden opgenomen. |
| Spelers overleven de val. | Ze beschikken mogelijk over een krachtveld. Het voorbeeld laat personages die door een krachtveld worden beschermd opzettelijk ongedeerd. |
Veelgestelde vragen
Moet het afsluitscript in Workspace of ServerScriptService worden geplaatst?
Voor deze basisconfiguratie plaatst u het script direct in het gevaarlijke onderdeel in de werkruimte. De werkruimte is een servercontainer voor de standaard uitvoeringscontext van scripts, en door het script bij het onderdeel te houden, is de val gemakkelijk te verplaatsen of te dupliceren.
Kan ik een LocalScript gebruiken voor een kill brick?
Gebruik voor dit voorbeeld een standaard server-side script. De server moet de spelgebeurtenissen beheren, zoals het aanpassen van de gezondheid van een personage, zodat het resultaat consistent wordt toegepast op alle spelers.
Zodra het basis -Kill Part-element in Roblox Studio werkt, dupliceer het dan voor extra gevaren, geef elk element een duidelijk visueel doel en test elke plaatsing voordat je het publiceert.