【问题标题】:Why do keep getting this error, I'm trying to turn a character invisible when the function runs为什么总是出现此错误,我试图在函数运行时使字符不可见
【发布时间】:2021-12-31 17:39:21
【问题描述】:
local camera = workspace.CurrentCamera
local Players = game:GetService("Players")
local player = Players.LocalPlayer
local startergui = game:GetService("StarterGui")
local char = Players.LocalPlayer.Character

local model = workspace.OceanVillagedr201["Wine Cellar"].WineDigitalkeypad
local screen = model.screen

local replicated_storage = game:GetService("ReplicatedStorage")
local CheckCode = Instance.new("RemoteEvent")
CheckCode.Name = "CheckWineCellarCodeEvent"
CheckCode.Parent = replicated_storage

local function Entercode(player)
    Players.LocalPlayer.Character.Humanoid.RootPart.Anchored = true
    for _,p in pairs(char:GetChildren()) do
         p.Transparency = 1
    end
    game.StarterGui = replicated_storage.EnterWineCellarCode
end
screen.ProximityPrompt.Triggered:Connect(function(player)
   Entercode()
end)

我试图创建一个在触发接近提示时触发的函数,其中一个 Entercode() 函数是将 playermodel 的透明度从 0 切换到 1 并删除角色移动的能力.

    local function Entercode(player)
    print("went")
    Players.LocalPlayer.Character.Humanoid.RootPart.Anchored = true
    for _,p in pairs(char:GetChildren()) do
         p.Transparency = 1
    end

但是我在这件作品上遇到了麻烦。它一直告诉我“尝试索引 nil”处理试图引用 Characters 模型的任何事情。 (FFC()、GetChildren()、Player.LocalPlayer.Character 等)。我正在使用本地脚本,因为我计划为 EnterCode() 的结果创建一个远程函数

【问题讨论】:

    标签: lua roblox


    【解决方案1】:

    我相信你的问题是这个角色要么在制作char时没有生成是一个旧角色(玩家重生并制作了一个新角色)。一个快速的解决方法是在Entercode 中重新声明char

    local function Entercode()
        char = player.Character
        char.Humanoid.RootPart.Anchored = true
        for _, p in pairs(char:GetChildren()) do
            if p:IsA("BasePart") then
                p.Transparency = 1
            end
        end
        replicated_storage.EnterWineCellarCode.Parent = player.PlayerGui
    end
    

    还有一些其他错误,以下是我所做的一些更改:

    local function Entercode()
    

    在原始代码中,player 是一个参数,但没有作为参数发送 还好你在代码开头设置了 player 变量。

    if p:IsA("BasePart") then
        p.Transparency = 1
    end
    

    在原始代码中,您没有检查p 是否是一部分。

    replicated_storage.EnterWineCellarCode.Parent = player.PlayerGui
    

    在原始代码中,您尝试将 StarterGui 设置为 EnterWineCellarCode我不知道您要做什么,但我假设您的意思是 parent @ 987654335@转PlayerGui

    最后,您可能希望使用GetDescendants() 而不是GetChildren()。为了更好地理解这个角色是如何工作的,我建议你阅读the wiki entry for it

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-08
      • 1970-01-01
      • 1970-01-01
      • 2021-06-27
      相关资源
      最近更新 更多