GSmGpE6CwX2y9JjB25B8
We use cookies on this site to enhance your user experience

玩家工具简介 – 武器、魔杖等

玩家工具简介 – 武器、魔杖等

Oct 18 2019, 2:37 PM PST 15 min

工具是用于实现武器、魔杖和其他交互式工具的特殊实例。本教程介绍如何创建工具、在游戏层次结构中放置它们的位置,以及如何编写基本工具脚本。

创建工具

所有工具均开始于空容器,该容器包含构成工具的所有实例,包括部件、声音效果和提供功能的脚本。

创建工具容器

要创建新工具容器,请执行以下操作:

  1. 在“Explorer(资源管理器)”窗口中,将鼠标悬停在 **Workspace(工作区)**上,然后单击 按钮。

  2. Interaction(交互)部分中,选择 Tool(工具)

插入部件或网格

添加到工具的任何部件或网格将是玩家看到的模型。你可以创建剑、火箭发射器、魔杖或几乎任何所需工具!

就像其他模型一样,工具可由多个部件组成。由于玩家将随身携带工具(或剧烈摆动它们,例如剑!),因此应使用 Weld 约束将工具的部件焊接在一起。

设置工具手柄

玩家携带的工具必须包含名为 Handle 的单个部件。手柄是工具与玩家的手接触的位置。

例如,下面的魔杖实际上分为三个部件:发光头、主体和红色手柄。当玩家配备魔杖时,他们会握住名为 Handle 的部件。

更改工具手柄

如果工具在地面上拖动或面向后方,则可以通过更改工具的 grip 属性进行调整。

每个工具都有所不同,因此需要通过更改 GripForwardGripRightGripUp 属性旁边的值进行试验,直到工具看起来正确。

工具在地面上拖动
工具面向后方
工具方向正确

还可以通过 GripPos 属性使工具偏离角色的手。这在创建应看起来靠在玩家肩膀上的工具时非常有用。

默认偏移量 (0,0,0)
工具相对肩膀的偏移量

自定义工具图标

玩家拥有的工具存放在其 Backpack 中。在屏幕上,这由动作栏表示,其中显示了背包中的每个工具。

使用以下属性可自定义工具在动作栏中的外观:

  • TextureID — 工具图标。按照与贴花、图像按钮等相同的方式设置此属性的图像 ID。
  • ToolTip — 悬停工具提示名称。

可以/不可以放下

默认情况下,玩家可以通过按 Backspace(macOS 上为 delete 来放下工具。可以通过将工具的 CanBeDropped 属性设置为 false 来禁用此选项。如果 CanBeDroppedfalse,则按 Backspacedelete 会使工具恢复到玩家的背包中。

将工具添加到游戏中

设置好你的工具后,应将其放置在游戏的对象层次结构的正确区域中。

默认起始工具

如果你希望所有玩家开始使用物品栏中的工具,请将其放置在 StarterPack 文件夹中。任何玩家重生时,工具将复制到其背包中。

可收集的工具

工具可以放置在工作区中(如果玩家能够在探索时对其进行收集)。例如,你可以将超级火箭发射器放置在游戏世界难以到达的区域。

赢得/购买的工具

某些工具应在玩家做了特殊的事情时予以奖励,或在游戏内商店中出售。应将这些工具放置在 ServerStorage 内,然后在合适的时间克隆到玩家的背包中。

将工具融入生活

要使工具在游戏世界中做有趣的事情,将需要添加脚本

特定于工具的事件

有四种特定于工具的情况可在工具脚本中使用。这些情况表示工具的状态以及玩家的输入。

Tool/Equipped|已装备 玩家从其背包中选择工具时发生。
Tool/Unequipped|未装备 玩家放下工具或切换工具时发生。
Tool/Activated|已激活 玩家开始激活工具(在游戏手柄上单击、点击或按 A)时发生。
Tool/Deactivated|已停用 玩家停止激活输入(释放按钮或触摸)时发生。

虽然在设计工具时可能不需要所有四种情况,但此代码可用作基本工具脚本模板:

添加基本脚本

下面介绍如何将简单的服务器脚本 (Script) 添加到工具。玩家进行装备后,将能够单击屏幕进行日夜切换

  1. 在“Explorer(资源管理器)”窗口中,将鼠标悬停在工具容器上,单击 ,然后插入 Script
  1. 复制以下代码并将其粘贴到脚本中。
local tool = script.Parent

local function onActivate()
	if game.Lighting.ClockTime >= 8 and game.Lighting.ClockTime < 16 then
		game.Lighting.ClockTime = 20
	else
		game.Lighting.ClockTime = 8
	end
end
 
tool.Activated:Connect(onActivate)
  1. 对你的游戏进行游戏测试,选择工具,然后单击游戏世界中的任意位置。每次单击都可实现日夜切换

Script 与 LocalScript

上述示例仅使用服务器脚本 (Script),但大多数工具将同时需要服务器脚本本地脚本 (LocalScript)(其中每个脚本处理工具行为的某些方面)。

请记住每个脚本类型之间的关键差异:

  • Script — 管理整个游戏世界中的更改(对所有玩家可见),例如,开锁、射箭等。
  • LocalScript — 管理仅在玩家的计算机/设备上发生的事情,例如,检测触摸或单击屏幕的确切位置。

下面是一些示例工具以及由本地脚本或服务器脚本管理的各个方面:

工具 本地脚本 服务器脚本
创建者的魔杖 检测玩家触摸或单击屏幕的位置。 在玩家触摸或单击的位置(游戏世界中)创建新部件。
隐形斗篷 装备有斗篷时,暂时使玩家对所有其他玩家不可见。
特大弓 检测玩家激活工具的时间(激活与停用之间的时间)。 用较大或较小的力发射魔法箭,具体取决于检测到的激活时间。

现在,你应熟悉如何设计工具、如何将其添加到你的游戏,以及如何编写脚本以赋予强大能力!