Roblox - 检测网格是否被手击中

Roblox - detect if mesh is hit by hand

我不知道从哪里开始,所以寻求帮助。我想创建一个脚本来检测某个网格是否被玩家右手击中。每次击中网格我都想为玩家增加 1 分。

任何人都可以在正确的方向推动我吗?

谢谢!

编辑:

我在 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)

当我用右手碰到零件时,它会注册,但每次我用右手碰到零件时,它都会在瞬间注册 5-20 次。见附图。有人知道为什么吗?我希望它只在右手碰到零件时注册一次,或者更好的是,只在用户敲打 part/mesh 时注册。我尝试在找到 RightHand 后添加等待,但这不起作用。

PS!我不知道这是否是编写脚本的正确方法...

下面是您将使用的代码示例。它会检查你的部分是否被右手或左手触摸,它会 运行 你的 if 语句中的任何内容,在这种情况下,无论你的分数是多少,它都会增加 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)

关于你的新问题,它与去抖动有关。 Roblox 在这里有一整篇文章:https://developer.roblox.com/en-us/articles/Debounce

基本上你必须添加一个新的 if 语句来检查玩家是否已经接触了这个部分,如果它不会重复 if 语句中的内容。上面的代码示例已经过编辑以使用 debounce。