NPC(非プレイヤーキャラクター)は、体験に深みを加えることができます。以下のすべてのNPCは視覚的にカスタマイズでき、動作を変更することができ、ゾンビ/兵士はプレイヤーや他のキャラクターを攻撃することでエリアを防御することさえできます。タグシステムを使用して動作を設定します。
ゲームにNPCを使用するには:
NPCのアイテムページで、緑の入手ボタンをクリックし、取引を確認します。
スタジオで、ツールボックスを開きます。
ツールボックスのインベントリセクションを選択します。

NPCを見つけてクリックし、場所に追加します。
キャラクター構造
各NPCモデルは通常、次のオブジェクトを含んでいます:
| オブジェクト名または[タイプ] | タイプ | 説明 |
|---|---|---|
| アニメーション | Folder | Animationsを含む、例えばAttackAnimationやDeathAnimationなど。 |
| 初期ポーズ | Folder | ポージング情報を含む。 |
| Animate | Script | キャラクターリグ上でアニメーションをロードして再生します。詳細についてはAnimateを参照してください。 |
| [アクセサリー] | Accessory | NPCのための複数のAccessoriesの1つで、帽子、武器などです。 |
| ヘルス | Script | 通常、時間の経過とともにHumanoidのヘルスを再生します。これを無効にするとキャラクターはヘルスを再生できなくなります。 |
| ヒューマノイド | Humanoid | Humanoid関連のプロパティを管理します。例えば、Humanoid.Health、Humanoid.WalkSpeed、Humanoid.DisplayDistanceTypeなど。 |
| NPC | Script | roaming や attacking など、キャラクター特有の動作を定義します。次のオブジェクトを親に持ちます: Maid (ModuleScript) は、使用したリソースを解放するのに便利なクラスを定義します。 Ragdoll (ModuleScript) は、キャラクターを物理的に影響を受ける緩んだ体に変換する関数を定義します(いくつかのヘルパー関数を定義するリグタイプのModuleScriptを親に持っています)。 |
| RbxNpcSounds | Script | 走る、死ぬなどのキャラクターの効果音に関連する動作を定義し管理します。 |
| BodyParts | BasePart | HumanoidRootPartまたは隣接するボディパーツにMotor6Dまたは制約オブジェクトを介して取り付けられたさまざまなキャラクターのボディパーツ。詳細についてはBodyPartsを参照してください。 |
| HumanoidRootPart | BasePart | リグのルートと見なされる特別な不可視部分; これはまた、キャラクターのModelのPrimaryPartでもあります。 |
| Configuration | Configuration | さまざまな動作を調整する値オブジェクトを含みます。詳細についてはConfigurationを参照してください。 |
デザインノート
NPCキットを使用する際に考慮すべきデザインノートは次のとおりです:
NPCの視覚的外観は、さまざまな[BodyParts]オブジェクトを追加または変更し、Accessoryオブジェクトを追加することでカスタマイズできます。
兵士、よだれを垂らすゾンビ、NP-C 9000ロボットは、リグの基本としてRthroを使用しています。ただし、RO-01ロボットは、UpperTorsoに接続されたスラスター部品を追加した修正されたRthroベースを使用しています。このように単純な関節を使用することで、元の基本リグを変更することなく、キャラクターに余分なジオメトリを含めることができます。
基本的に、NPCアニメーションは、Animateスクリプトのポーズ内の既存のアニメーションオブジェクトのAnimationIdを変更するか、Animationsフォルダ内のものを変更することでカスタマイズできます。このような変更は本質的にはアセットのスワップであり、詳細を変更するには既存のアニメーションのカスタムコピーを作成し、異なる条件下でアニメーションを再生するには、AnimateまたはNPCスクリプトを直接編集できます。詳細についてはAnimationを参照してください。
Animate
NPCのModel内のAnimate Scriptは、アニメーション関連の設定を処理し、次のオブジェクトを含んでいます:
| オブジェクト名または[タイプ] | タイプ | 説明 |
|---|---|---|
| ScaleDampeningPercent | NumberValue | キャラクターがスケールされる際のアニメーション速度の修正方法を定義します(1未満は、キャラクターがスケールされるとアニメーション再生が逆にスケールされることを意味します)。 |
| PlayEmote | BindableFunction | 他のスクリプトから呼び出してポーズを強制的に取ることができます。 |
| [Pose] | StringValue | アイドル、ジャンプ、移動などの再生可能なアニメーショカテゴリーへの参照です。このオブジェクトは任意の数のAnimationsを親に持つことができます。 これらのAnimationsは、ポーズが仮定されている間に再生するアニメーションのいずれかを優先するWeight (NumberValue)を親に持ちます; 通常、アイドルやダンスポーズにバリエーションを追加するために使用されます。 |
BodyParts
NPCのModel内のBodyPart BasePartは、さまざまなキャラクターの体の部分を表し、次のオブジェクトを含んでいます:
| オブジェクト名または[タイプ] | タイプ | 説明 |
|---|---|---|
| AvatarPartScaleType | StringValue | パーツがどのようにスケールされるかを決定します; 値はClassic、ProportionsNormal、またはProportionsSlenderです。 |
| OriginalSize | Vector3Value | キャラクターのスケーリングが1のときのパーツのサイズを決定します。 |
| [Attachment] | Attachment | スクリプト、エフェクト、およびToolやAccessoryなどのオブジェクトが配置中に利用できる、個々のパーツに対する相対的なポイントを定義します。 |
| [Motor6D] | Motor6D | 2つの体の部分の間のアニメーションされた関節です。Animatorは、アニメーションが作成されたときに使用されたMotor6Dsの名前に依存しているため、このオブジェクトの名前を変更しないようにしてください。 |
| [Joint] | WeldConstraint, Constraint, JointInstance | 2つの体の部分間の非アニメーション関節です。 |
| [Sound] | Sound | 頭やHumanoidRootPartに一般的に見られます; RbxNpcSoundsスクリプトによって制御されるリグ内で音を再生します。 |
Configuration
各NPCは、その階層内にConfigurationオブジェクトを含んでおり、値オブジェクトのコンテナとして機能します。これらはNPCスクリプトによってさまざまな動作を調整するために使用されます。特に指定されない限り、これらはすべてのキャラクターに適用されます。
| オブジェクト名または[タイプ] | タイプ | 説明 |
|---|---|---|
| DestroyOnDeath | BoolValue | NPCが死んだ後すぐに全体が消失します。ラグドールが持続するようにするにはこれを無効にします。 |
| PatrolEnabled | BoolValue | NPCがその初期位置の周りをさまよわせます。 |
| PatrolRadius | NumberValue | NPCがその初期位置からさまよう最大距離を定義します。PatrolEnabledがtrueであることを前提とします。 |
| RagdollEnabled | BoolValue | NPCが死んだときにダラダラになるようにし、バラバラにならないようにします。 |
| AttackDamage | NumberValue | NPCによる攻撃を受けた際の犠牲者が失うヘルスの量を定義します。これはゾンビと兵士のキットのみに適用されます。 |
| AttackDelay | NumberValue | 銃撃の間に必要な最小秒数を定義します。これは兵士のキットのみに適用されます。 |
| AttackMode | NumberValue | 兵士が何を攻撃するかを指定します。タグ付けシステムに基づいています。これは兵士のキットのみに適用されます。 |
| AttackRadius | NumberValue | NPCが攻撃を試みる前に、潜在的な犠牲者から離れる最大距離を定義します。これはゾンビと兵士のキットのみに適用されます。 |
| ClipCapacity | NumberValue | 兵士がリロードする必要なく発射できる弾薬の数を定義します。これは兵士のキットのみに適用されます。 |
| ReloadDelay | NumberValue | 兵士の武器クリップがリロードされるまでに必要な秒数を定義します。これは兵士のキットのみに適用されます。 |
タグを割り当てる
NPCスクリプトはCollectionServiceタグを使用して、他のキャラクターやプレイヤーに対する攻撃性を管理します。以下の表からさまざまなタグが次のように割り当てられます。
Playerキャラクターにタグを割り当てるには、StarterCharacterScriptsにScriptを追加し、CollectionService:AddTag()呼び出しを行います。例えば:
local CollectionService = game:GetService("CollectionService")CollectionService:AddTag(script.Parent, "SoldierEnemy")
| タグ | 目的 |
|---|---|
| SoldierEnemy または SoldierFriend | 兵士が、そのAttackMode設定値に基づいて他のキャラクターを攻撃すべきかを決定します。兵士のAttackModeが1に設定されると、他のキャラクターは攻撃可能と見なされるためにSoldierEnemyでタグ付けされる必要があります。兵士のAttackModeが2に設定されると、SoldierFriendタグのないすべてのオブジェクトが攻撃可能と見なされます。兵士のAttackModeが3に設定されると、これらのタグは完全に無視され、兵士はすべてのキャラクターを攻撃します。 |
| ZombieFriend | このタグは、ゾンビがキャラクターを攻撃すべきでないかを判断するために使用されます。適用されると、ゾンビはタグ付けされたキャラクターに対しておとなしくなります。 |



