NPC 套件

*此内容使用人工智能(Beta)翻译,可能包含错误。若要查看英文页面,请点按 此处

NPC(非玩家角色)可以为体验添加大量深度。以下所有 NPC 都可以通过视觉进行自定义,其行为已修改,僵尸/士兵甚至可以通过使用标签系统来防守一个区域,攻击玩家或其他角色来设置行为。

要在游戏中使用 NPC:

  1. 选择以下任意 NPC 套件之一:

    流口僵尸
    士兵
    RO-01 机器人
    NP-C 9000 机器人
  2. 在 NPC 的物品页面上,单击绿色 获取 按钮,确认交易。

  3. 在 Roblox Studio 中,打开 工具箱视图工具箱 )。

  4. 选择您的工具箱 库存 部分。

  5. 找到 NPC 并单击以将其添加到地场景。

角色结构

每个 NPC 模型通常包含以下对象:

对象名称或[类型]类型描述
动画Folder包含 Animations , 例如 AttackAnimationDeathAnimation .
初始姿势Folder包含姿势信息。
动画Script在角色骨架上加载并播放动画。请参阅动画获取更多详情。
[配件]Accessory可能有多个Accessories为NPC提供帽子、武器等
生命值Script通常会在一段时间内恢复 Humanoid 生命值。禁用此功能将防止角色恢复生命值。
人形怪物Humanoid管理Humanoid相关属性,例如Humanoid.HealthHumanoid.WalkSpeedHumanoid.DisplayDistanceType
NPCScript >

定义特定角色的行为,例如巡逻、攻击等父辈以下对象:

女仆 ( ModuleScript ) 定义了一个用于释放使用的资源的有用类。:

布娃娃 ( ModuleScript )定义了一个函数,将角色转换为一个松散的物理影响的身体(父辈一个 RigTypes ModuleScript 定义了几个助助函数).

RbxNpcSoundsScript定义并管理与角色音效相关的行为,例如奔跑、死亡等
身体部件BasePart各种角色身体部件通过 Motor6D 或约束对象附加到 HumanoidRootPart 或邻近身体部件。请参阅身体部件获取更多详情。
人形根部件BasePart被视为装备根源的特殊隐形部骨架;这也是角色的 PrimaryPartModel
配置Configuration包含各种调整各种行为的值对象。请参阅配置获取更多详情。

设计注释

当使用 NPC 套件时,请记住以下设计注意事项:

  • NPC 的视觉外观可通过添加/修改各种[BodyParts]对象以及添加 Accessory 对象来进行自定义。

  • 士兵、喷血僵尸和 NP-C 9000 机器人使用 Rthro 作为他们的装备基地。然而,RO-01机器人使用了修改的Rthro基地,该基地使用 上躯干 连接到推进部件,使用WeldConstraints。这样使用简单的连接可以让你为角色包含额外的几何图形,而不改变原始的基础骨架。

  • 在基本水平等级,NPC 动画可以通过修改 AnimationId 现有动画对象的 动画 位置或那些位于 动画 文件夹中的动画来进行自定义。这样的变化实际上是一种资产交换——要更改更细致的细节,您可以创建现有动画的自定义副本,以在不同条件下播放动画,您可以直接编辑 动画NPC 脚本。了解更多信息,请参阅动画

动画

在 NPC 中的动画 处理动画相关配置,包含以下对象:

对象名称或[类型]类型描述
缩放减震百分比NumberValue定义了如何修改动画速度,当角色缩放时(少于 1 意味着动画播放速度与角色缩放速度相反)。
播放表情BindableFunction这可以由其他脚本调用,以强制假设姿势。
[姿势]StringValue引用闲置、行走跃、步行等可播放的动画类别该对象可以父辈任意数量的 Animations 。 这些 Animations 父级将 重量 ( NumberValue ) 优先播放一个多个动画中的一个,假设姿势时;通常用于添加空闲和舞蹈姿势的多样性。

身体部件

NPC 中的身体部分 代表各种角色身体部分,包含以下对象:

对象名称或[类型]类型描述
虚拟形象部分比例类型StringValue决定零件会被缩放到什么程度;值可以是 经典 , 比例正常比例纤细
原始尺寸Vector3Value当角色缩放为 1 时,决定零件的大小。
[附件]Attachment定义与个别零件相关的点,可以在定位时使用的脚本、效果和对象,例如 ToolAccessory
[Motor6D]Motor6D两个身体部位之间的动画连接。请注意,Animator 依赖于 Motor6Ds 的名称与在创建动画时使用的 Motor6Ds 保持一致,因此避免重命名此对象。
[共同]WeldConstraint , Constraint , JointInstance两个身体部位之间的非动画连接。
[音效]Sound常见于头部或 HumanoidRootPart ; 播放从装备中发出的声音,由 RbxNpcSounds 脚本控制。

配置

每个 NPC 包含在其等级结构中的 Configuration 对象,作为值对象容器。这些被 NPC 脚本用于调整各种行为。除非另有说明,这些适用于所有字符。

对象名称或[类型]类型描述
在死亡时摧毁BoolValue导致整个 NPC 在死亡后很快被摧毁。禁用此功能以确保布娃娃持续存在。
已启用巡逻BoolValue使 NPC 在其起始位置周围游荡。
巡逻半径NumberValue定义 NPC 从起始位置到达最大距离的最大距离,假设 巡逻启用 是真实的。
布娃娃启用BoolValue使 NPC 在死亡时跛子,而不是分裂。
攻击伤害NumberValue定义受到 NPC 攻击时会损失多少生命值的受害者。仅适用于僵尸和士兵套装。
攻击延迟NumberValue定义了射击之间的最小秒数。仅适用于士兵套件。
攻击模式NumberValue指定士兵将攻击什么,基于 标记系统 。这仅适用于士兵套件。
攻击半径NumberValue定义 NPC 在攻击之前必须从潜在受害者那里获得的最大距离。仅适用于僵尸和士兵套件。
片段容量NumberValue定义士兵在需要重新装弹前可以发射多少子弹。仅适用于士兵套件。
重新加载延迟NumberValue定义在士兵的武器弹夹重新装弹之前需要多少秒。仅适用于士兵套件。

分配标签

NPC 脚本使用CollectionService来管理对其他角色和玩家的攻击。从下表中可以分配以下各种标签:

  • 要将标签分配给另一个 NPC,请使用其属性的 标签 部分或 Studio 的 标签编辑器 将其分配给 NPC 的顶级。

  • 要将标签分配给 Player 角色,您可以通过添加 Script起始角色脚本 来进行 CollectionService:AddTag() 调用。例如:


    local CollectionService = game:GetService("CollectionService")
    CollectionService:AddTag(script.Parent, "SoldierEnemy")
标签目的
士兵敌人士兵朋友

决定是否基于战士的 攻击模式 配置值,应该攻击另一个角色。当士兵的 攻击模式 设置为 1 时,其他角色必须被标记为 士兵敌人 才能被认为可攻击。当士兵的 攻击模式 设置为 2 时,所有没有 SoldierFriend 标签的对象都被视为可攻击的。当士兵的 攻击模式 设置为 3 时,这些标签将被完全忽略,士兵将攻击所有角色。

生化人朋友 这个标签由僵尸用于确定是否不应该攻击角色。应用时,僵尸对标记的角色变得顺从。