当播放器与接近提示交互时,它会检查播放器是不是有工具,如果没有,则执行功能 -ROBLOX STUDIO

Posted

技术标签:

【中文标题】当播放器与接近提示交互时,它会检查播放器是不是有工具,如果没有,则执行功能 -ROBLOX STUDIO【英文标题】:When player interacts with proximity prompt it checks if the player has a tool, if not then it does a function -ROBLOX STUDIO当播放器与接近提示交互时,它会检查播放器是否有工具,如果没有,则执行功能 -ROBLOX STUDIO 【发布时间】:2021-05-29 15:34:09 【问题描述】:

我正在制作一个在玩家与接近提示交互时显示的 gui,但是,我希望脚本检查玩家的库存中是否有该工具。如果它有工具,那么什么都不做(不要' t 显示 gui),如果它没有该工具,则触发一个事件。我试过了,但这个错误一直出现 Workspace.Part.Script:6: attempt to index nil with 'Backpack' 这是脚本:

debounce = true
script.Parent.ProximityPrompt.Triggered:Connect(function(player)
    if debounce then
        debounce = false
        local noob = game.Players:GetPlayerFromCharacter(player.Parent)
        local Tool = noob.Backpack:FindFirstChild("Gunball")
        
            if Tool == nil then
        
            game.ReplicatedStorage.RemoteEvent:FireClient(player)
            debounce = true
            end
        end
end)

这是 gui 脚本(本地),即使我真的不认为这很有用..:

game.ReplicatedStorage.RemoteEvent.OnClientEvent:Connect(function()
    script.Parent.Visible = true
end)

【问题讨论】:

【参考方案1】:

Workspace.Part.Script:6: 尝试使用“Backpack”索引 nil

local Tool = noob.Backpack:FindFirstChild("Gunball")

这里noobnil

所以在local noob = game.Players:GetPlayerFromCharacter(player.Parent) game.Players:GetPlayerFromCharacter(player.Parent) 返回nil

根据Roblox documentation

此函数返回与给定关联的播放器 Player.Character,如果找不到,则返回 nil。它相当于 以下函数:

local function getPlayerFromCharacter(character)
  for _, player in pairs(game:GetService("Players"):GetPlayers()) do
      if player.Character == character then
          return player
      end
  end
end

所以看来playerplayer.ParentParent 不是与任何玩家关联的Character

为什么像Character 这样的玩家属性应该是玩家的父级?我不是 Roblox 专家,但这对我来说似乎没有任何意义。

如果你想检查触发 ProximitPrompt 的玩家是否有一些物品,为什么不使用player?我的意思是触发它的玩家。所以检查它的背包,而不是一些父角色的东西。

【讨论】:

好文章。我想我可以理解他们是如何以这个错误告终的。很多传统的object.touched events 处理玩家角色的某些部分,这就是为什么你会看到这个 part.parent > character > getPlayerFromCharacter 歌舞。很高兴这个事件直接给你播放器对象。 谢谢!我对脚本很陌生,我不太了解,你的回答真的很有帮助

以上是关于当播放器与接近提示交互时,它会检查播放器是不是有工具,如果没有,则执行功能 -ROBLOX STUDIO的主要内容,如果未能解决你的问题,请参考以下文章

Pygame - 声音延迟

检查 UITableViewCell 是不是完全可见以进行自动播放

如何检查 Phonon 声音是不是已经在播放?

如何检查我的播放器是否与对象发生碰撞?

使用 Angular CLI 在组件之间处理数据时遇到问题

当信号丢失(即没有用户交互)时如何播放画外音通知?