我正在尝试获取玩家的鼠标位置。但是我正在获取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
答案 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