TommyF
TommyF

Reputation: 343

Roblox - detect if mesh is hit by hand

I am not sure where to start so asking for some help. I want to create a script that detect if a certain mesh is hit by players right hand. Every time the mesh is hit I want to increase points for player by 1.

Anyone who can nudge me in the right direction here?

Thanks!

EDIT:

I have added this script in StarterCharacterScripts:

game.Players.LocalPlayer.Character:WaitForChild("RightHand").Touched:Connect(function(hit)
      local part1 = workspace.CoinsClouds["Meshes/SackOfGoldNoCoins1"] 
      part1.Touched:Connect(function(hit)
        if hit.Name == "RightHand" then 
          print(hit.Name)
        end
      end)
end)

This will register when I bump into the part with the right hand, BUT it will register it 5-20 times in a split second every time I bump into the part with the right hand. See attached image. Anyone know why? I would like it to register only once when the right hand is bumped against the part, or even better, only when the user punch the part/mesh. I have tried to add a wait after RightHand is found, but that doesn't work.

PS! I don't know if this is the right way to script it...

enter image description here

Upvotes: 0

Views: 429

Answers (1)

Crann Moroney
Crann Moroney

Reputation: 429

Below is an example of the code you would use. It will check if your part is touched by either the right or left hand and it will run whatever is inside of your if statement, in this case it will increase whatever your score is by 1.

local part = workspace.Part -- reference the part here
local debounce = false --used to check for debounce

part.Touched:Connect(function(hit)
    if hit.Name == "RightHand" or "LeftHand" then -- checks if a hand touched it
        if not debounce then  --Check that debounce variable is not true
            debounce = true  --currently touching the part
            
            print("hit")
            
            wait(1)
            debounce = false
        end
    end
end)

In relation to your new question it is to do with debounce. Roblox has an entire article on it here: https://developer.roblox.com/en-us/articles/Debounce

Basically you would have to add a new if statement to check that the player isn't already touching this part if it is it wont repeat the what is inside the if statement. The code sample above has been edited to work with debounce.

Upvotes: 2

Related Questions