Lua本地脚本问题:多米诺生成器与旋转器报错求助
多米诺方块生成与旋转脚本报错修复
我正在编写Lua本地脚本,实现生成多米诺样式方块并旋转使其立起的功能,目前运行报错。作为Lua新手,代码可能不够优化,以下是我的代码:
local click local a local spawner = Instance.new("Part",workspace) spawner.Name = "spawner" spawner.Position = Vector3.new(22, 0.125, 30) spawner.Size = Vector3.new(4, 0.25, 4) spawner.Anchored = true Instance.new("ClickDetector",workspace.spawner) click = game.Workspace.spawner.ClickDetector.MouseClick:Connect(function() local domino = Instance.new("Part",game.Workspace.dominos) domino.Orientation = Vector3.new(0, -90, -90) domino.Size = Vector3.new(8,2,4) domino.Position = Vector3.new(40, 6, 30) domino.Color = Color3.new(1,0,0) Instance.new("ClickDetector",workspace.dominos.Part) domino.Name = "domino" a = game.Workspace.dominos.domino.ClickDetector.MouseClick:Connect(function() a.Orientation = Vector3.new(0,-90,-90) end) end)
报错原因及修复点
- 对象查找错误:给新多米诺加ClickDetector时,代码写的是
Instance.new("ClickDetector",workspace.dominos.Part),但刚生成的Part还没改名,且应该直接挂到domino变量上,而非查找不存在的路径对象。 - 属性调用错误:把事件连接对象赋值给
a后,在回调里写a.Orientation——但a是事件连接实例,没有Orientation属性,要操作的是多米诺方块本身的朝向。 - 重复命名问题:每次生成的多米诺都叫"domino",后续点击生成器时,
game.Workspace.dominos.domino只会找到第一个方块,逻辑混乱。
修复后的代码
local clickConnection -- 创建生成器方块 local spawner = Instance.new("Part") spawner.Name = "spawner" spawner.Position = Vector3.new(22, 0.125, 30) spawner.Size = Vector3.new(4, 0.25, 4) spawner.Anchored = true spawner.Parent = workspace -- 给生成器添加点击检测器 local spawnerClick = Instance.new("ClickDetector") spawnerClick.Parent = spawner -- 点击生成器生成多米诺 clickConnection = spawnerClick.MouseClick:Connect(function() -- 创建多米诺方块 local domino = Instance.new("Part") domino.Name = "domino_" .. tick() -- 用时间戳做唯一名字,避免重复 domino.Orientation = Vector3.new(0, -90, 0) -- 初始平放,点击后立起 domino.Size = Vector3.new(8, 2, 4) domino.Position = Vector3.new(40, 6, 30) domino.Color = Color3.new(1, 0, 0) domino.Parent = workspace.dominos -- 确保workspace里提前创建好dominos文件夹 -- 给多米诺添加点击检测器 local dominoClick = Instance.new("ClickDetector") dominoClick.Parent = domino -- 点击多米诺使其立起 local dominoClickConn = dominoClick.MouseClick:Connect(function() domino.Orientation = Vector3.new(0, -90, -90) dominoClickConn:Disconnect() -- 可选:只允许点击一次立起 end) end)
修复说明
- 给每个多米诺生成唯一名字,避免重复命名导致的对象查找错误
- 直接将ClickDetector挂到新生成的
domino变量上,确保对象存在 - 在回调里直接操作
domino变量的Orientation,纠正属性调用错误 - 规范
Instance.new的使用方式,先设置属性再赋值Parent,运行更稳定 - 可选添加事件断开逻辑,避免多次点击触发重复操作
内容的提问来源于stack exchange,提问作者nilo3424
相关产品推荐
相关产品推荐

