PcoWSkbVqDnWTu_dm2ix
We use cookies on this site to enhance your user experience

Traps with if/then Statements

Traps with if/then Statements

Prerequisites Students should have completed:
  • Parameters and Events - Creating Traps
  • if/then Statements
  • Lesson Time 10 - 15 minutes
    Optional Handouts Coding with Lua
    Learning Objectives
  • Create a part that checks for objects touching it
  • Use an if/then statement to check for a player and then change it's Health property
  • With if/then statements, you can make a trap that changes a player’s health rather than just destroying everything it touches. Roblox avatars contain an object called a humanoid that lets players move around and also controls player health. An if/then statement can be used to check if whatever is touching the trap has a humanoid part. If it does, then the player’s health will be set to 0.

    trapPartFinal.gif

    Setup the Part and Script

    1. Insert and name a trap part.

    2. In the trap part, insert and name a script.

    3. Create a variable referencing the script’s parent part:

      trapPart_updated_1.png

    Create a Custom Function

    Create a new function that will connected to the trap part’s Touched event.

    1. Create a function with a parameter. This example will name them onTouch and otherPart.

      trapPart_updated_2.png

    1. Inside of the function, create a variable to store the parameter’s parent object.

      trapPart_updated_3.png

    More About Humanoids

    A Humanoid object, just like a real life human, is made of many parts like arms and legs. In game, only a specific part of the Humanoid, like their leg, will touch the trap.

    To change the Humanoid’s health, the script needs to get the owner, or parent, of that leg. otherPart.Parent is then a way to store the part’s parent so it can be used later.


    1. Connect the function to the trap part’s Touched event so that it will run whenever something touches the part.

      trapPart_updated_4.png

    Check Work with Print Statements

    You can add in a print statement to check if your code is working.
    trapPart_updated_5.png

    If the code works, you’ll notice the print text appear in the Output Window whenever a part or another player touch it.
    ifThenTrap_checkPart.png


    Checking for Humanoids

    Remember, the parameter otherPart records whatever touches the trap part, but that might be part of a player or it might be your baseplate. To make it is so the trap will only destroy humanoids, use an if/then statement to check if whatever is in otherPart contains a Humanoid object.

    Finding a Specific Object

    The function FindFirstChildWhichIsA() can be used to look for specific types of objects, which is handy because we’re looking for a Humanoid type object. You can use a variable to store whatever Humanoid is found.

    1. Type: local humanoid = character:FindFirstChildWhichIsA("Humanoid")

      trapPart_updated_6.png

    Watch Out For Variable Names

    If you named your last variable something other than “character”, make sure that you use that name instead.


    Add an if/then to Find Humanoids

    Use an if/then statement to check if there is anything being stored inside of the humanoid variable you just made.

    1. After local humanoid, create an if/then statement with the condition if humanoid then

      trapPart_updated_7.png

    Understanding if humanoid then

    If humanoid then only checks to see if there’s anything in the variable humanoid.

    If no Humanoid object was found when something touched the part, the humanoid variable will stay empty, and the if/then statement will stay false. If something is stored in humanoid, then the statement becomes true.


    Change the Humanoid Health

    If the statement is true, you can use the same humanoid variable to set the player’s health to 0.

    1. Between then and end, type humanoid.Health = 0

      trapPart_updated_8.png

    Don't Use Destroy on Humanoids

    Destroying humanoid or character will not actually destroy the player but cause the game to break since that player won’t respawn properly. Always set a player’s health to 0 if you want them to restart their game.


    1. Test your game.

      trapPartFinal.gif

    Finished Code Example

    -- Checks for player touch. If true, sets health to 0
    
    -- Variable setup
    local trap = script.Parent
    
    -- Checks for Humanoid in otherPart
    local function onTouch(otherPart)
    	-- Store parent of otherPart
    	local character = otherPart.Parent
    
    	-- Looks for a humanoid
    	local humanoid = character:FindFirstChildWhichIsA("Humanoid")
    
    	if humanoid then
    		-- If part has humanoid, set health to 0
    		humanoid.Health = 0
    	end
    end
    
    -- Connect the Touched event to onTouch
    trap.Touched:Connect(onTouch)
    NPCs Are Also Humanoids

    NPCs, or Non-Playable Characters, also have a humanoid. That means this code will affect NPCs as well.


    Final Project Example

    You can download an example of this project here.


    Code Challenges
    • Create a part that will turn red and fall after one second if a player steps on it.
    • Create a part that sets the player’s health to 100 instead of 0.
    • Fire instances don’t automatically do damage. Create a fire pit that will harm any players that touch it.

    Troubleshooting Your Code

    • Check that all of your variables match. They all should have the same spelling and capitalization.
    • You should have two ends. One for the if/then statement, and one for the function

    These documents are licensed by Roblox Corporation under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. Roblox, Powering Imagination, and Robux are trademarks of Roblox Corporation, registered in the United States and other countries.