NPC (karakter non-pemain) dapat menambah banyak kedalaman pada sebuah permainan. Semua NPC berikut dapat disesuaikan secara visual, perilakunya dapat dimodifikasi, dan zombie/soldier bahkan dapat mempertahankan area dengan menyerang pemain atau karakter lain menggunakan sistem tag untuk mengatur perilaku.
Untuk menggunakan NPC dalam permainan Anda:
Di halaman item NPC, klik tombol hijau Dapatkan dan konfirmasi transaksi.
Di Studio, buka Toolbox.
Pilih bagian Inventaris toolbox Anda.

Temukan NPC dan klik untuk menambahkannya ke tempat.
Struktur karakter
Setiap model NPC biasanya berisi objek-objek berikut:
| Nama objek atau [Tipe] | Tipe | Deskripsi |
|---|---|---|
| Animasi | Folder | Berisi Animasi, seperti AttackAnimation atau DeathAnimation. |
| Pose Awal | Folder | Berisi informasi pose. |
| Animate | Script | Memuat dan memutar animasi pada rig karakter. Lihat Animate untuk detail lebih lanjut. |
| [Aksesori] | Accessory | Salah satu dari beberapa Aksesori untuk NPC seperti topi, senjata, dll. |
| Kesehatan | Script | Biasanya memulihkan kesehatan Humanoid seiring waktu. Menonaktifkan ini akan mencegah karakter memulihkan kesehatan. |
| Humanoid | Humanoid | Mengelola properti terkait Humanoid, seperti Humanoid.Health, Humanoid.WalkSpeed, Humanoid.DisplayDistanceType, dll. |
| NPC | Script | Menentukan perilaku spesifik karakter seperti berkeliaran, menyerang, dll. Mengandung objek-objek berikut: Maid (ModuleScript) mendefinisikan kelas yang berguna dalam melepaskan sumber daya yang digunakan. Ragdoll (ModuleScript) mendefinisikan fungsi yang mengubah karakter menjadi tubuh yang terpengaruh fisika yang longgar (mengandung RigTypes ModuleScript yang mendefinisikan beberapa fungsi pembantu). |
| RbxNpcSounds | Script | Menentukan dan mengelola perilaku terkait efek suara karakter seperti berlari, mati, dll. |
| BodyParts | BasePart | Berbagai bagian tubuh karakter yang terhubung ke HumanoidRootPart atau bagian tubuh tetangga melalui Motor6D atau objek constraint. Lihat BodyParts untuk detail lebih lanjut. |
| HumanoidRootPart | BasePart | Bagian khusus yang tidak terlihat yang dianggap sebagai akar dari rig; ini juga merupakan PrimaryPart dari Model karakter. |
| Konfigurasi | Configuration | Berisi objek nilai yang menyetel berbagai perilaku. Lihat Konfigurasi untuk detail lebih lanjut. |
Catatan desain
Saat menggunakan kit NPC, ingatlah catatan desain berikut:
Penampilan visual NPC dapat disesuaikan dengan menambahkan/memodifikasi berbagai objek [BodyParts] dan dengan menambahkan objek Accessory.
Soldier, Zombie Meneteskan Air Liur, dan Robot NP-C 9000 menggunakan Rthro sebagai dasar rig mereka. Namun, Robot RO-01 menggunakan dasar Rthro yang dimodifikasi yang menambahkan bagian pendorong yang terhubung ke UpperTorso menggunakan WeldConstraints. Menggunakan sendi sederhana dengan cara ini memungkinkan Anda untuk menyertakan geometri tambahan untuk karakter Anda tanpa mengubah rig dasar yang asli.
Pada tingkat dasar, animasi NPC dapat disesuaikan dengan memodifikasi AnimationId dari objek Animasi yang ada dalam pose skrip Animate, atau yang ada dalam folder Animasi. Perubahan semacam itu pada dasarnya adalah pertukaran aset - untuk mengubah detail yang lebih halus, Anda dapat membuat salinan kustom dari animasi yang ada, dan untuk memutar animasi di bawah kondisi yang berbeda, Anda dapat mengedit skrip Animate atau NPC secara langsung. Untuk informasi lebih lanjut, lihat Animasi.
Animate
Skrip Script Animate dalam Model NPC menangani konfigurasi terkait animasi dan berisi objek-objek berikut:
| Nama objek atau [Tipe] | Tipe | Deskripsi |
|---|---|---|
| ScaleDampeningPercent | NumberValue | Menentukan bagaimana kecepatan animasi dimodifikasi saat karakter diskalakan (kurang dari 1 menunjukkan pemutaran animasi diskalakan secara terbalik saat karakter diskalakan). |
| PlayEmote | BindableFunction | Ini dapat dipanggil oleh skrip lain untuk memaksa asumsi pose. |
| [Pose] | StringValue | Referensi ke kategori animasi yang dapat dimainkan seperti diam, melompat, berjalan, dll. Objek ini dapat menjadi induk dari sejumlah Animasi. Objek Animasi ini menjadi induk dari Weight (NumberValue) yang memprioritaskan salah satu dari beberapa animasi untuk diputar saat pose diasumsikan; biasanya digunakan untuk menambah variasi pada pose diam dan menari. |
BodyParts
BodyPart BasePart dalam Model NPC mewakili berbagai bagian tubuh karakter dan berisi objek-objek berikut:
| Nama objek atau [Tipe] | Tipe | Deskripsi |
|---|---|---|
| AvatarPartScaleType | StringValue | Menentukan bagaimana bagian akan diskalakan; nilai dapat berupa Classic, ProportionsNormal, atau ProportionsSlender. |
| OriginalSize | Vector3Value | Menentukan ukuran bagian saat skala karakter adalah 1. |
| [Attachment] | Attachment | Menentukan titik relatif terhadap bagian individu yang dapat digunakan skrip, efek, dan objek seperti Tool atau Accessory selama penempatan. |
| [Motor6D] | Motor6D | Sebuah sendi yang dianimasikan antara dua bagian tubuh. Perhatikan bahwa Animator bergantung pada nama Motor6Ds untuk konsisten dengan nama Motor6Ds yang digunakan saat animasi dibuat, jadi hindari mengganti nama objek ini. |
| [Joint] | WeldConstraint, Constraint, JointInstance | Sendi yang tidak dianimasikan antara dua bagian tubuh. |
| [Sound] | Sound | Umumnya ditemukan di kepala atau HumanoidRootPart; memutar suara dari dalam rig yang dikendalikan oleh skrip RbxNpcSounds. |
Konfigurasi
Setiap NPC menyertakan objek Configuration dalam hierarkinya yang bertindak sebagai wadah objek nilai. Ini digunakan oleh skrip NPC untuk menyetel berbagai perilaku. Kecuali ditentukan lain, ini berlaku untuk semua karakter.
| Nama objek atau [Tipe] | Tipe | Deskripsi |
|---|---|---|
| DestroyOnDeath | BoolValue | Menyebabkan seluruh NPC dihancurkan segera setelah mati. Nonaktifkan ini agar ragdoll tetap ada. |
| PatrolEnabled | BoolValue | Menyebabkan NPC berkeliaran di area sekitar posisi awalnya. |
| PatrolRadius | NumberValue | Menentukan jarak maksimum yang dapat dijelajahi NPC dari posisi awalnya, dengan asumsi PatrolEnabled adalah true. |
| RagdollEnabled | BoolValue | Menyebabkan NPC menjadi lemas saat mati, alih-alih hancur. |
| AttackDamage | NumberValue | Menentukan berapa banyak kesehatan yang hilang oleh korban saat diserang oleh NPC. Ini berlaku hanya untuk kit Zombie dan Soldier. |
| AttackDelay | NumberValue | Menentukan jumlah detik minimum antara tembakan. Ini berlaku hanya untuk kit Soldier. |
| AttackMode | NumberValue | Menentukan apa yang akan diserang oleh soldier, berdasarkan sistem penandaan. Ini berlaku hanya untuk kit Soldier. |
| AttackRadius | NumberValue | Menentukan jarak maksimum NPC harus dari calon korban sebelum mencoba menyerang. Ini berlaku hanya untuk kit Zombie dan Soldier. |
| ClipCapacity | NumberValue | Menentukan berapa banyak peluru yang dapat ditembakkan soldier sebelum perlu mengisi ulang. Ini berlaku hanya untuk kit Soldier. |
| ReloadDelay | NumberValue | Menentukan berapa banyak detik yang harus berlalu sebelum klip senjata soldier diisi ulang. Ini berlaku hanya untuk kit Soldier. |
Menetapkan tag
Skrip NPC menggunakan CollectionService tag untuk mengelola agresi terhadap karakter dan pemain lain. Berbagai tag dari tabel berikut dapat ditetapkan sebagai berikut:
Untuk menetapkan tag ke karakter Player, Anda dapat menambahkan Script ke StarterCharacterScripts dengan panggilan CollectionService:AddTag(). Misalnya:
local CollectionService = game:GetService("CollectionService")CollectionService:AddTag(script.Parent, "SoldierEnemy")
| Tag | Tujuan |
|---|---|
| SoldierEnemy atau SoldierFriend | Menentukan apakah seorang soldier, berdasarkan nilai konfigurasi AttackMode-nya, harus menyerang karakter lain. Ketika AttackMode soldier diatur ke 1, karakter lain harus diberi tag SoldierEnemy untuk dianggap dapat diserang. Ketika AttackMode soldier diatur ke 2, semua objek tanpa tag SoldierFriend dianggap dapat diserang. Ketika AttackMode soldier diatur ke 3, tag ini diabaikan sepenuhnya dan soldier akan menyerang semua karakter. |
| ZombieFriend | Tag ini digunakan oleh zombie untuk menentukan apakah ia tidak boleh menyerang karakter. Ketika diterapkan, zombie menjadi jinak terhadap karakter yang diberi tag. |



