我将如何使此脚本停止在播放器敲击特定键后将鼠标的击中坐标发送到服务器?

问题描述 投票:0回答:1

因此,我目前在播放器屏幕上有一个按钮,当他们单击该按钮时,它将检查播放器是否在世界上的任何地方单击,并将其鼠标的点击坐标发送到服务器。然后,服务器将使用这些组件制作特定的零件(它将很快与模型一起使用),当玩家按下鼠标左键时,鼠标将移至鼠标所在的任何位置。那很好。但是,我想确定如果玩家在设置零件位置之前或之后击中字母“ E”,它将基本上停止将鼠标击中数据发送到服务器,然后继续前进。

我仍在学习如何使用UserInputService。 UserInputService.InputBeganUserInputService.InputEnded不能像我希望的那样工作。有人可以帮我这个忙吗?

这里是代码:

本地脚本:

userInputService.InputBegan:Connect(function(input)     
        if input.UserInputType == Enum.UserInputType.MouseButton1 then
            movePartEvent:FireServer(math.ceil(mouse.Hit.X), math.ceil(mouse.Hit.Y), math.ceil(mouse.Hit.Z))
        end

        if input.UserInputType == Enum.KeyCode.E then
            print("Part placed...")
        --Exit the userInput part of the code here --
        end
    end)

服务器脚本:

local replicatedStorage = game:GetService("ReplicatedStorage")
local movePartEvent = replicatedStorage:WaitForChild("MovePartEvent")

movePartEvent.OnServerEvent:Connect(function(...)   
    local tuppleArgs = {...}
    local player  = tuppleArgs[1]
    local value1  = tuppleArgs[2]
    local value2  = tuppleArgs[3]
    local value3  = tuppleArgs[4]

    local function movePartOnEvent(part)        
        part.Position = Vector3.new(value1, value2, value3)
    end

    movePartOnEvent(game.Workspace.MovingPart)
end)

提前感谢!

lua user-input roblox
1个回答
0
投票

我将添加一个变量,该变量确定客户端是否仍在将数据发送到服务器。当您按“ E”时,它将更改变量的值。

local movingPart = true;

userInputService.InputBegan:Connect(function(input)     
        if input.UserInputType == Enum.UserInputType.MouseButton1 and movingPart then
            movePartEvent:FireServer(math.ceil(mouse.Hit.X), math.ceil(mouse.Hit.Y), math.ceil(mouse.Hit.Z))
        end

        if input.UserInputType == Enum.KeyCode.E then
            print("Part placed...")
            movingPart = false;

        --Exit the userInput part of the code here --
        end
    end)

现在,当您按下“ E”时,它将停止将鼠标位置发送到服务器。如果要移动另一个零件,则必须再次将变量“ movingPart”设置为true。

© www.soinside.com 2019 - 2024. All rights reserved.