يمكن أن تضيف الشخصيات غير القابلة للعب (NPCs) عمقاً كبيراً للتجربة. يمكن تخصيص جميع شخصيات NPC التالية بصرياً، وتعديل سلوكها، ويمكن للزومبي/الجنود حتى الدفاع عن منطقة من خلال مهاجمة اللاعبين أو شخصيات أخرى باستخدام نظام العلامات لضبط السلوك.
لاستخدام NPC في لعبتك:
في صفحة عنصر NPC، انقر على زر الحصول على الأخضر وآكد المعاملة.
في الاستوديو، افتح صندوق الأدوات.
اختر قسم المخزون في صندوق الأدوات لديك.

ابحث عن NPC وانقر عليه لإضافته إلى المكان.
هيكل الشخصية
تحتوي كل نموذج NPC عادةً على الكائنات التالية:
| اسم الكائن أو [النوع] | النوع | الوصف |
|---|---|---|
| الرسوم المتحركة | Folder | يحتوي على الرسوم المتحركة، مثل AttackAnimation أو DeathAnimation. |
| Pose الأولية | Folder | يحتوي على معلومات الوضعية. |
| تحريك | Script | يحمّل ويشغل الرسوم المتحركة على هيكل الشخصية. راجع تحريك للحصول على مزيد من التفاصيل. |
| [إكسسوار] | Accessory | أحد الإكسسوارات المحتملة المتعددة لـ NPC مثل القبعات، الأسلحة، إلخ. |
| الصحة | Script | عادةً ما تعيد توليد صحة Humanoid بمرور الوقت. تعطل هذا سيمنع الشخصية من استعادة صحتها. |
| Humanoid | Humanoid | يدير خصائص متعلقة بـ Humanoid، مثل Humanoid.Health، Humanoid.WalkSpeed، Humanoid.DisplayDistanceType، إلخ. |
| NPC | Script | يحدد سلوكيات معينة للشخصية مثل التجوال، الهجوم، إلخ. ويحتوي على الكائنات التالية: Maid (ModuleScript) تحدد فئة مفيدة في إطلاق الموارد المستخدمة. Ragdoll (ModuleScript) يحدد وظيفة تحول الشخصية إلى جسم غير مثبت يتأثر بالفيزياء (يحتوي على RigTypes ModuleScript التي تحدد العديد من الوظائف المساعدة). |
| RbxNpcSounds | Script | يحدد ويدير السلوك المتعلق بتأثيرات الصوت للشخصية مثل الجري، الموت، إلخ. |
| أجزاء الجسم | BasePart | أجزاء مختلفة من الجسم متصلة بـ HumanoidRootPart أو أجزاء الجسم المجاورة من خلال Motor6D أو كائنات القيود. راجع أجزاء الجسم للحصول على مزيد من التفاصيل. |
| HumanoidRootPart | BasePart | جزء خاص غير مرئي يعتبر الجذر للهيكل؛ وهو أيضًا PrimaryPart لنموذج الشخصية بـ Model. |
| الإعدادات | Configuration | يحتوي على كائنات قيمة تضبط سلوكيات متنوعة. راجع الإعدادات لمعرفة المزيد من التفاصيل. |
ملاحظات التصميم
عند استخدام طقم NPC، ضع في اعتبارك الملاحظات التصميمية التالية:
يمكن تخصيص المظهر المرئي لشخصية NPC عن طريق إضافة/تعديل كائنات [أجزاء الجسم] المتنوعة وإضافة كائنات Accessory.
يستخدم الجنود، وزومبي يسيل لعابه، وروبوتات NP-C 9000 Rthro كأساس لهيكلهم. ومع ذلك، تستخدم روبوتات RO-01 قاعدة Rthro معدلة تضيف أجزاء دفع مرتبطة بـ UpperTorso باستخدام WeldConstraints. إن استخدام المفاصل البسيطة بهذه الطريقة يتيح لك تضمين هندسة إضافية لشخصياتك دون تغيير الهيكل الأصلي.
على مستوى أساسي، يمكن تخصيص الرسوم المتحركة لشخصيات NPC من خلال تعديل AnimationId لكائنات Animation الموجودة داخل وضعيات تحريك، أو تلك الموجودة في مجلد الرسوم المتحركة. يعتبر هذا التغيير في الأساس تبادل أصول - لتغيير التفاصيل الدقيقة، يمكنك إنشاء نسخ مخصصة من الرسوم المتحركة الموجودة، ولتشغيل الرسوم المتحركة في ظروف مختلفة، يمكنك تحرير تحريك أو NPC النصوص البرمجية مباشرة. لمزيد من المعلومات، راجع الرسوم المتحركة.
تحريك
يتولى برنامج تحريك Script في نموذج NPC Model إدارة الإعدادات المتعلقة بالرسوم المتحركة ويحتوي على الكائنات التالية:
| اسم الكائن أو [النوع] | النوع | الوصف |
|---|---|---|
| ScaleDampeningPercent | NumberValue | يحدد كيفية تعديل سرعات الرسوم المتحركة أثناء تغيير حجم الشخصية (أقل من 1 يعني أن تشغيل الرسوم المتحركة يتغير عكسياً عندما تتغير الشخصية في الحجم). |
| PlayEmote | BindableFunction | يمكن استدعاء هذا من برامج نصية أخرى لفرض اتخاذ وضعية معينة. |
| [وضعية] | StringValue | إشارة إلى فئة رسوم متحركة قابلة للتشغيل مثل الوقوف، القفز، المشي، إلخ. يمكن أن يحتوي هذا الكائن على أي عدد من الرسوم المتحركة. تحتوي هذه الرسوم المتحركة على وزن (NumberValue) يحدد أولوية واحدة من الرسوم المتحركة العديدة لتشغيلها أثناء اتخاذ الوضعية؛ وعادةً ما تستخدم لإضافة تنوع إلى وضعيات الوقوف والرقص. |
أجزاء الجسم
تمثل أجزاء الجسم BasePart في نموذج NPC Model أجزاء مختلفة من شخصية NPC وتحتوي على الكائنات التالية:
| اسم الكائن أو [النوع] | النوع | الوصف |
|---|---|---|
| AvatarPartScaleType | StringValue | يحدد كيفية تغيير حجم الجزء؛ يمكن أن تكون القيم Classic، ProportionsNormal، أو ProportionsSlender. |
| OriginalSize | Vector3Value | يحدد حجم الجزء عندما يكون تجسيم الشخصية 1. |
| [Attachment] | Attachment | يحدد نقطة نسبية للجزء الفردي قد تستخدمها البرامج النصية، والتأثيرات، والكائنات مثل Tool أو Accessory أثناء تحديد الموقع. |
| [Motor6D] | Motor6D | مفصل متحرك بين جسمين. لاحظ أن Animator يعتمد على اسم Motor6Ds ليكون متسقاً مع ذلك الخاص بـ Motor6Ds المستخدمة عند إنشاء الرسوم المتحركة، لذا تجنب إعادة تسمية هذا الكائن. |
| [Joint] | WeldConstraint، Constraint، JointInstance | مفصل غير متحرك بين جسمين. |
| [Sound] | Sound | يجد غالبًا في الرأس أو HumanoidRootPart؛ يشغل الأصوات من داخل الهيكل كما تتحكم بها نصوص RbxNpcSounds. |
الإعدادات
يتضمن كل NPC كائن Configuration ضمن تسلسله الهرمي والذي يعمل كحاوية لكائنات القيمة. يتم استخدام هذه من قبل نص NPC لضبط سلوكيات متنوعة. ما لم يُحدد خلاف ذلك، تنطبق هذه على جميع الشخصيات.
| اسم الكائن أو [النوع] | النوع | الوصف |
|---|---|---|
| DestroyOnDeath | BoolValue | تسبب في تدمير NPC بالكامل بعد فترة وجيزة من موته. قم بإيقاف تشغيل هذا للراغدولات ليكون لها استمرارية. |
| PatrolEnabled | BoolValue | تسبب في تجول NPC في منطقة حول موضعه الابتدائي. |
| PatrolRadius | NumberValue | يحدد أقصى مسافة يمكن أن يتجول بها NPC بعيداً عن موضعه الابتدائي، بشرط أن تكون PatrolEnabled صحيحة. |
| RagdollEnabled | BoolValue | تسبب في أن يصبح NPC غير متماسك عندما يموت، بدلاً من أن يتفكك. |
| AttackDamage | NumberValue | يحدد مقدار الصحة التي تفقدها الضحية عندما يهاجمها NPC. ينطبق هذا فقط على مجموعات الزومبي والجنود. |
| AttackDelay | NumberValue | يحدد الحد الأدنى من الثواني بين اللقطات. ينطبق هذا فقط على مجموعات الجنود. |
| AttackMode | NumberValue | يحدد ما الذي سوف يهاجمه الجندي، بناءً على نظام العلامات. ينطبق هذا فقط على مجموعات الجنود. |
| AttackRadius | NumberValue | يحدد أقصى مسافة يجب أن يكون فيها NPC من ضحية محتملة قبل أن يحاول الهجوم. ينطبق هذا فقط على مجموعات الزومبي والجنود. |
| ClipCapacity | NumberValue | يحدد عدد الرصاصات التي يمكن للجندي إطلاقها قبل الحاجة إلى إعادة التحميل. ينطبق هذا فقط على مجموعات الجنود. |
| ReloadDelay | NumberValue | يحدد عدد الثواني التي يجب أن تمر قبل أن يتم إعادة تحميل مشط سلاح الجندي. ينطبق هذا فقط على مجموعات الجنود. |
تعيين العلامات
يستخدم نص NPC علامات CollectionService لإدارة العدائية تجاه الشخصيات الأخرى واللاعبين. يمكن تعيين علامات مختلفة من الجدول التالي كما يلي:
لتعيين علامة إلى شخصية Player، يمكنك إضافة Script إلى StarterCharacterScripts مع استدعاء CollectionService:AddTag(). على سبيل المثال:
local CollectionService = game:GetService("CollectionService")CollectionService:AddTag(script.Parent, "SoldierEnemy")
| العلامة | الهدف |
|---|---|
| SoldierEnemy أو SoldierFriend | تحدد ما إذا كان يجب على الجندي، بناءً على قيمة إعداد AttackMode الخاصة به، مهاجمة شخصية أخرى. عندما يتم تعيين AttackMode للجندي إلى 1، يجب أن تُعطى الشخصيات الأخرى علامة SoldierEnemy لتعتبر قابلة للهجوم. عندما يتم تعيين AttackMode للجندي إلى 2، تعتبر جميع الكائنات التي لا تحمل علامة SoldierFriend قابلة للهجوم. عندما يتم تعيين AttackMode للجندي إلى 3، يتم تجاهل هذه العلامات تمامًا وسيهاجم الجندي جميع الشخصيات. |
| ZombieFriend | تستخدم هذه العلامة بواسطة الزومبي لتحديد ما إذا كان يجب عليه عدم مهاجمة شخصية معينة. عند تطبيقها، يصبح الزومبي غير عدائي تجاه الشخصية المعلمة. |



