我将如何制作带有网格的建筑工具? (机器人卢阿)
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
如果您想检查他们是否在他们的平台上构建,您必须检查 x 和 z 坐标是否在正确的范围内。 如果你想要鬼块,你必须在鼠标坐标处显示每个块,而不是实际构建它们
【讨论】:
以上是关于我将如何制作带有网格的建筑工具? (机器人卢阿)的主要内容,如果未能解决你的问题,请参考以下文章