我正在尝试在Roblox中构建一个构建系统。如何停止零件滑到鼠标上?

时间:2019-11-10 20:28:42

标签: lua roblox

我要创建一个不带网格的建筑系统,并创建一个零件,该零件显示要放置新块的位置(让 pblock 代表要放置新块的位置)。 我知道为什么 pblock 会滑到屏幕上,因为它是鼠标的目标。 如果您想告诉我做新的方块,我先做 pblock 。 到目前为止,这是我所做的:

local plr=game.Players.LocalPlayer
local mou=plr:GetMouse()

local tempblock=Instance.new("Part",workspace)
tempblock.Name="TemporaryBuildingBlock"
tempblock.Size=Vector3.new(4,4,4)
tempblock.Transparency=1
tempblock.Anchored=true
tempblock.CanCollide=false

local tempblock_sbox=Instance.new("SelectionBox",tempblock)
tempblock_sbox.Color3=Color3.fromRGB(0,0,0)
tempblock_sbox.Adornee=tempblock_sbox.Parent

while wait()do
    tempblock.CFrame=CFrame.new(Vector3.new(mou.Hit.X,mou.Hit.Y+1.5,mou.Hit.Z))
end

我实际上认为我可以删除 pblock https://i.stack.imgur.com/BdEXs.gif

2 个答案:

答案 0 :(得分:0)

现在,您的while循环将永远不会停止将零件移至鼠标。您需要一种方法来打破该循环,或者更准确地切换何时应该移动零件。

一种简单的解决方案是监听鼠标的点击。一键将其打开,再单击将其关闭。

local shouldMoveTemp = true

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

-- add a listener for when the left click is pressed down
mou.Button1Down:Connect(function()
    shouldMoveTemp = not shouldMoveTemp
end)

-- make a block to show where to build
local tempblock = Instance.new("Part",game.Workspace)
tempblock.Name = "TemporaryBuildingBlock"
tempblock.Size = Vector3.new(4,4,4)
tempblock.Transparency = 1
tempblock.Anchored = true
tempblock.CanCollide = false

local tempblock_sbox = Instance.new("SelectionBox",tempblock)
tempblock_sbox.Color3 = Color3.fromRGB(0,0,0)
tempblock_sbox.Adornee = tempblock_sbox.Parent

-- make a loop that is always running that monitors for when to move the block
while true do
    if shouldMoveTemp then
        tempblock.CFrame = CFrame.new(Vector3.new(mou.Hit.X,mou.Hit.Y+1.5,mou.Hit.Z))
    end
    wait()
end

答案 1 :(得分:0)

我找到了答案。 我只需要设置 mou 的TargetFilter。

mou.TargetFilter=tempblock

问题解决了。