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

Roblox开发:点击按钮时模型Tween动画无响应问题求助

问题排查与解决

可能的原因及对应修复方案:

1. LocalScript运行环境错误

Workspace中的普通模型(非玩家角色)上的LocalScript不会自动执行,LocalScript仅能在以下客户端容器中运行:

  • Player.PlayerScripts
  • StarterPlayerScripts
  • StarterPack
  • PlayerGui
  • 玩家Character下的部件

修复:
将LocalScript移到StarterPlayerScripts中,修改代码定位到目标模型:

local TweenService = game:GetService("TweenService")
-- 替换为模型在Workspace中的实际路径
local coreModel = game.Workspace.Core
local button = coreModel.Button.ClickDetector
local targetModel = coreModel

local endPosition = Vector3.new(0, 5, 0)

local function onButtonClicked()
    -- 确保模型已设置PrimaryPart
    if not targetModel.PrimaryPart then
        warn("模型未设置PrimaryPart,请在属性面板指定一个核心部件")
        return
    end
    local tweenInfo = TweenInfo.new(
        2,
        Enum.EasingStyle.Quad,
        Enum.EasingDirection.Out
    )
    -- 对PrimaryPart的位置做补间
    local tween = TweenService:Create(targetModel.PrimaryPart, tweenInfo, {Position = endPosition})
    tween:Play()
end

button.MouseClick:Connect(onButtonClicked)

2. 错误尝试补间Model的Position

你的代码中parentPart是Core(Model类型),Model的Position属性为只读,无法通过TweenService修改。必须通过移动Model的PrimaryPart来带动整个模型。

修复:

  • 先在Core模型的属性面板中设置PrimaryPart(选择Union或其他主要部件)
  • 修改代码,将补间目标改为Model的PrimaryPart:
-- 补间PrimaryPart的位置(推荐方式)
local tween = TweenService:Create(targetModel.PrimaryPart, tweenInfo, {Position = endPosition})

-- 或通过CFrame控制模型整体位置
local tween = TweenService:Create(targetModel.PrimaryPart, tweenInfo, {CFrame = CFrame.new(endPosition)})

3. ClickDetector事件绑定错误

如果LocalScript放在Button部件内,script.Parent指向的是Part而非ClickDetector,Part没有MouseClick事件,会导致绑定失效。

修复:
确认LocalScript在ClickDetector内部,若放在Button部件内,需修改代码:

local clickDetector = script.Parent.ClickDetector
clickDetector.MouseClick:Connect(onButtonClicked)

4. 客户端同步问题

若使用LocalScript修改服务器创建的模型位置,仅当前客户端能看到移动效果。如需所有玩家同步,改用服务器脚本(放在ServerScriptService或Workspace模型中):

local TweenService = game:GetService("TweenService")
local coreModel = game.Workspace.Core
local clickDetector = coreModel.Button.ClickDetector
local targetModel = coreModel

local endPosition = Vector3.new(0, 5, 0)

local function onButtonClicked(player)
    if not targetModel.PrimaryPart then
        warn("模型未设置PrimaryPart")
        return
    end
    local tweenInfo = TweenInfo.new(
        2,
        Enum.EasingStyle.Quad,
        Enum.EasingDirection.Out
    )
    local tween = TweenService:Create(targetModel.PrimaryPart, tweenInfo, {Position = endPosition})
    tween:Play()
end

clickDetector.MouseClick:Connect(onButtonClicked)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 08:37:04