【问题标题】:Need to change transparency of an object once dialog with NPC completes与 NPC 对话完成后需要更改对象的透明度
【发布时间】:2018-12-30 22:49:54
【问题描述】:

我是 Roblox 脚本的新手,我试图在与 NPC 对话开始后将武器从透明变为可见。

我在属性中将武器“Autohyperlaser”的透明度设置为 1,因此默认情况下它是透明的。我有一个名为“Weapon_holder”的 NPC,它有一个 Dialog 和 DialogChoice 孩子。所以层次结构是:

workspace.Weapon_holder.Head.Dialog.DialogChoice

我在 DialogChoice 对象下创建了一个脚本,其中包含以下代码:

local Dialog = script.Parent

Dialog.DialogChoiceSelected:Connect(function(Player, Choice)
workspace.Autohyperlaser.Handle.Transparency = 0
end)

我期待workspace.Autohyperlaser.Handle 的透明度在选择任何对话框选项后从 1 变为 0。但是,枪仍然是透明的,所以脚本要么不正确,要么没有被调用。我怎样才能让它工作?

【问题讨论】:

  • 是否有任何输出/错误?您是否进行过任何调试(例如,在您的函数中使用简单的 print 语句)来了解 (1) 您的脚本是否正在运行以及 (2) 事件是否被触发?

标签: lua roblox


【解决方案1】:

DialogChoiceSelected 事件只能在客户端触发。这是一个事件 Dialog,而不是 DialogChoice。而且您必须在LocalScript 中使用它,因为该事件仅在客户端进行。您可以通过将 LocalScript 放入 StarterPlayer>StarterCharacterScripts 将其放入角色中,或者通过将其放入 StarterPlayer>StarterPlayerScripts 将其放入播放器中,因为 LocalScripts 只有在它是这些或任何其他玩家后代对象的后代时才会运行。

对于代码,您只需更改 Dialog 变量:

local Dialog = workspace.Weapon_holder.Head.Dialog --Since it is an event of a Dialog

Dialog.DialogChoiceSelected:Connect(function(Player, Choice)
workspace.Autohyperlaser.Handle.Transparency = 0
end)

如果 LocalScript 在正确的位置,它现在应该被触发。

【讨论】:

    猜你喜欢
    • 2011-11-30
    • 1970-01-01
    • 2013-03-23
    • 2015-06-12
    • 2017-03-14
    • 2011-01-20
    • 1970-01-01
    • 2012-01-20
    • 2021-08-13
    相关资源
    最近更新 更多