You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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)

修复说明

  1. 给每个多米诺生成唯一名字,避免重复命名导致的对象查找错误
  2. 直接将ClickDetector挂到新生成的domino变量上,确保对象存在
  3. 在回调里直接操作domino变量的Orientation,纠正属性调用错误
  4. 规范Instance.new的使用方式,先设置属性再赋值Parent,运行更稳定
  5. 可选添加事件断开逻辑,避免多次点击触发重复操作

内容的提问来源于stack exchange,提问作者nilo3424

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 11:56:34