非玩家角色 (NPC) 可以為體驗增添許多深度。以下所有 NPC 都可以視覺化自定義,其 行為已修改,僵尸/士兵甚至可以使用 標籤系統 來設置行為來防守一個區域。
要在遊戲中使用 NPC:
在 NPC 的物品頁面上,點擊綠色 獲取 按鈕,確認交易。
在 Roblox Studio 中,開啟 工具箱( 查看 → 工具箱 )。
選擇您的工具箱 庫存 部分。
找到 NPC 並點擊以將其添加到地空間。
角色結構
每個 NPC 模型通常包含以下物件:
物件名稱或[類型] | 類型 | 說明 |
---|---|---|
動畫 | Folder | 包含 Animations , 例如 AttackAnimation 或 DeathAnimation . |
初始位置 | Folder | 包含擺姿資訊。 |
動畫 | Script | 在角色骨架上載和播放動畫。見 動畫 獲得更多詳情。 |
[配件] | Accessory | 可能有多個Accessories對NPC進行,例如帽子、武器等 |
生命值 | Script | 通常會隨著時間而恢復 Humanoid 生命值。停用此選項會防止角色恢復生命值。 |
人形化 | Humanoid | 管理Humanoid相關屬性,例如Humanoid.Health、Humanoid.WalkSpeed、Humanoid.DisplayDistanceType等 |
NPC | Script > | 定義角色特定的行為,例如巡遊、攻擊等父親以下對象:: 女僕 ( ModuleScript ) 定義了一個用於釋放使用的資源的有用類別。: 布娃娃 ( ModuleScript ) 定義一個函數,將角色轉換為一個鬆散的物理影響身體(父輩一個 RigTypes ModuleScript 定義了幾個助助功能)。 |
RbxNpc聲音 | Script | 定義並管理與角色聲音效果相關的行為,例如奔跑、死亡等 |
身體部位 | BasePart | 各種角色身體部位通過 Motor6D 或約束物件附加到 HumanoidRootPart 或鄰近身體部位。見 身體部位 獲得更多細節。 |
人形根部件 | BasePart | 被認為是裝備根源的特殊隱形骨架件;這也是角色的 PrimaryPart 的 Model 。 |
配置 | Configuration | 包含調整各種行為的值對象。請參閱配置以獲得更多詳情。 |
設計說明
當使用 NPC 套件時,請記住以下設計注意事項:
NPC 的視覺外觀可以通過添加/修改各種[身體部位]物件和添加 Accessory 物件來自訂化。
士兵、流口僵尸和 NP-C 9000 機器人使用 Rthro 作為他們的骨架基礎。但是,RO-01 機器人使用修改的 Rthro 基礎,其中包含連接到 上軀 的推進器零件,使用 WeldConstraints 。這邊使用簡單的關節以這種方式讓你可以為角色包含額外的幾何圖形,而不需要更改原始的基本骨架。
在基本水平等級,NPC 動畫可以通過修改 AnimationId 現有動畫對象內的 動畫 位置,或者在 動畫 文件夾內的動畫來進行自定義。這樣的變更本質上是一種資產交換--要更改更細緻的細節,您可以創建現有動畫的自定義副本,以在不同條件下播放動畫,您可以直接編輯 動畫 或 NPC 腳本。欲了解更多信息,請參閱動畫。
動畫
在 NPC 中的動畫 處理 動畫 相關配置,包含以下對象:
物件名稱或[類型] | 類型 | 說明 |
---|---|---|
縮放阻尼百分比 | NumberValue | 定義如何修改動畫速度,當角色縮放時(少於 1 意味著動畫播放速度會逆向縮放,當角色縮放時)。 |
播放表情 | BindableFunction | 這可以由其他腳本呼叫,以強制假設姿勢。 |
[姿勢] | StringValue | 參考遊玩動畫類別,例如閒置、跳躍、步行等等此對象可以父級任何數量的 Animations 。這些Animations父親將 重量 (NumberValue)優先於多個動畫播放,當姿勢假設時;通常用於增加閒置和舞蹈姿勢的多樣性。 |
身體部位
NPC 中的BodyPart 代表各種角色身體部位,包含以下對象:
物件名稱或[類型] | 類型 | 說明 |
---|---|---|
人物比例類型 | StringValue | 決定零件會以何種方式縮放;值可以是 經典 、 比例正常 或 比例瘦 。 |
原始尺寸 | Vector3Value | 當角色縮放為 1 時,決定零件的大小。 |
[附件] | Attachment | 定義與個別零件相關的點,腳本、效果和物件,例如 Tool 或 Accessory 可能在定位時使用。 |
[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 呼叫來將 StarterCharacterScripts 添加到 CollectionService:AddTag() 中。例如:
local CollectionService = game:GetService("CollectionService")CollectionService:AddTag(script.Parent, "SoldierEnemy")
標籤 | 目的 |
---|---|
士兵敵人 或 士兵朋友 | 決定一名士兵,根據其 攻擊模式 配置值,是否應該攻擊另一個角色。當士兵的 攻擊模式 設為 1 時,其他角色必須標記為 士兵敵人 才能被視為可攻擊。當士兵的 攻擊模式 設為 2 時,沒有 SoldierFriend 標籤的所有對象都被視為可攻擊。當士兵的 攻擊模式 設為 3 時,這些標籤完全被忽略,士兵將攻擊所有角色。 |
殭屍朋友 | 這個標籤由殭屍用來決定是否不應該攻擊一個角色。當應用時,殭屍會對標記的角色變得溫順。 |