首页 > 解决方案 > 尝试使用“CameraMaxZoomDistance”索引 nil 我尝试搜索解决方案,但没有找到一个

问题描述

我试图让玩家的最大变焦距离更多地取决于他们拥有的力量(力量),因为力量越大,角色越大。

但我收到上述错误:

尝试使用“CameraMaxZoomDistance”索引 nil

这是我的代码:

            hum:WaitForChild("BodyDepthScale").Value = .5 + (powr.Value / 250)
            hum:WaitForChild("BodyHeightScale").Value = .5 + (powr.Value / 250)
            hum:WaitForChild("BodyWidthScale").Value = .5 + (powr.Value / 250)
            hum:WaitForChild("HeadScale").Value = .5 + (powr.Value / 250)
            if powr.Value > 1000 then
                game:GetService("Players").LocalPlayer.CameraMaxZoomDistance = powr.Value / 50
            end
            if powr.Value > 200 then
                print('higher')
                hum.MaxHealth = powr.Value / 2
            end

标签: luaroblox

解决方案


你的错误是说那game:GetService("Players").LocalPlayer是零。根据LocalPlayer的文档:

此属性仅针对 LocalScripts(以及它们所需的 ModuleScripts)定义,因为它们在客户端上运行。对于服务器(Script 对象在其上运行其代码),此属性为零。

您正在尝试访问特定角色模型的Player对象,并且有几种不同的方法可以获取它。您已经可以访问角色模型本身中的人形对象,因此我建议使用Players:GetPlayerFromCharacter函数来定位 Player 对象。

if powr.Value > 1000 then
    -- get the character model
    local character = hum.Parent

    -- lookup the player based on the character
    local PlayerService = game:GetService("Players")
    local player = PlayerService:GetPlayerFromCharacter(character)
    if not player then
        warn("Could not locate player from character : ", character.Name)
        return
    end

    -- adjust the player's camera zoom distance
    player.CameraMaxZoomDistance = powr.Value / 50
end

推荐阅读