Roblox:ServerScriptService.DamagableManager:48:尝试索引本地“鼠标”(nil值)

时间:2020-03-05 20:58:18

标签: lua roblox

我正在尝试获取玩家的鼠标位置。但是我正在获取ServerScriptService.DamagableManager:48:尝试索引本地“鼠标”(零值)错误。

试图连接到服务器脚本的LocalScript:

local function onMousedClicked(actionName,inputState, inputObject)
    if inputState == Enum.UserInputState.Begin then 
        CheckIfDamagable:InvokeServer()
        print("MouseClicked")
    end
end

正在获取鼠标信息的服务器脚本:

function CheckIfDamagableObject(player) 
     local mouse = player:GetMouse()

     --Unrelated codes here
end

CheckIfDamagable.OnServerInvoke = CheckIfDamagableObject

1 个答案:

答案 0 :(得分:1)

您发现,将鼠标对象传递给服务器时,它变为nil。根据{{​​3}}上的文档:

此项目必须在LocalScript中使用才能按预期在线工作。

您应该只将鼠标放在客户端上,然后使用RemoteFunction将结果传递到服务器。

LocalScript

-- get the mouse object
local mouse = game.Players.LocalPlayer:GetMouse()

local function onMousedClicked(actionName,inputState, inputObject)
    if inputState == Enum.UserInputState.Begin then
        -- pass the mouse position and any other information to the server
        local result = CheckIfDamagable:InvokeServer(mouse.Hit)
        print("Mouse Clicked : ", result)
    end
end

脚本

function CheckIfDamagableObject(player, mousePos)
    print("Mouse CFrame : ", mousePos)

    -- Unrelated codes here
end

CheckIfDamagable.OnServerInvoke = CheckIfDamagableObject