我将如何制作带有网格的建筑工具? (机器人卢阿)

Posted

技术标签:

【中文标题】我将如何制作带有网格的建筑工具? (机器人卢阿)【英文标题】:How would I make a building tool with a grid? (ROBLOX LUA) 【发布时间】:2020-02-08 02:35:59 【问题描述】:

我对 lua 编码有点陌生,目前我正在尝试制作一个游戏,其中 4 个团队在时间限制内建立一个基地,然后进行战斗。虽然我能够做到让玩家可以构建,但没有网格系统,所有团队共享相同的工具。

所以我的问题是:我如何制作一个“构建工具”,让玩家能够使用网格系统进行构建?我还需要以某种方式做到这一点,以便各自的团队只能在各自的平台上构建。

如果可能的话,还有一个“幽灵方块”,显示玩家将要放置方块的位置。

这是我目前得到的构建工具包的代码:

-- all of this is in a localscript inside of the hammer tool

local players = game:GetService("Players")

local hammer = script.Parent -- the hammer tool that will make the player know they are in “building mode”

local player = game.Players.LocalPlayer

local mouse = player:GetMouse() -- get the mouse from the player

local function placeBlock(Part)

    local position = mouse.Hit.p -- the position of the mouse so i can place blocks there

    local buildingBrickRed = Instance.new("Part") -- creates a part that the player will place

    buildingBrickRed.Parent = workspace

    buildingBrickRed.BrickColor = BrickColor.new("Really red") -- makes the brick red

    buildingBrickRed.Size = Vector3.new(5, 5, 5) -- sets the size of the block

    buildingBrickRed.CFrame = CFrame.new(position) -- sets the position of the block to be where the mouse is

end

hammer.Activated:Connect(placeBlock) -- connects to the function when the player activates the tool

【问题讨论】:

【参考方案1】:

我不确定 Roblox 编码是如何工作的,但是对于网格,您可以更改鼠标的坐标(假设这也是一个 3D 矢量),方法是将它们全部除以砖块大小并舍入该值并再次相乘。

function griddify(coordinate)
    return math.floor(coordinate / 5) * 5
end

print(griddify(31))    -->   30
print(griddify(31.4))  -->   30
print(griddify(3141))  --> 3140

如果您想检查他们是否在他们的平台上构建,您必须检查 xz 坐标是否在正确的范围内。 如果你想要鬼块,你必须在鼠标坐标处显示每个块,而不是实际构建它们

【讨论】:

以上是关于我将如何制作带有网格的建筑工具? (机器人卢阿)的主要内容,如果未能解决你的问题,请参考以下文章

如何检查玩家是不是已经在另一个桌子/房间? - 卢阿

如何使用从搅拌机导入的网格动画

Unity ProBuilder 网格块擦除

将模型分成网格以进行深度有序渲染 [关闭]

unity如何制作恶魔城小地图

我将如何制作一个可以指出链接的不和谐机器人?