NPC'ler (oyuncu olmayan karakterler) bir deneyime derinlik katabilir. Aşağıdaki tüm NPC'ler görsel olarak özelleştirilebilir, davranışları değiştirilmiş ve zombiler/askerler, davranışı ayarlamak için bir etiket sistemi kullanarak oyunculara veya diğer karakterlere saldırarak bir alanı koruyabilir.
Oyununuzda bir NPC kullanmak için:
NPC'nin öğe sayfasında, yeşil Al butonuna tıklayın ve işlemi onaylayın.
Studio'da Araç Kutusunu açın.
Araç kutunuzun Envanter bölümünü seçin.

NPC'yi bulun ve yeri eklemek için üzerine tıklayın.
Karakter yapısı
Her NPC modeli tipik olarak aşağıdaki nesneleri içerir:
| Nesne adı veya [Tip] | Tip | Açıklama |
|---|---|---|
| Animasyonlar | Folder | Animasyonlar içerir; örneğin bir SaldırıAnimasyonu veya ÖlümAnimasyonu. |
| İlk Pozlar | Folder | Poz bilgilerini içerir. |
| Animate | Script | Karakter iskeletinde animasyonları yükler ve oynatır. Daha fazla ayrıntı için Animate bölümüne bakın. |
| [Aksesuar] | Accessory | Şapkalar, silahlar vb. gibi NPC için olası birden fazla Aksesuardan biri. |
| Sağlık | Script | Genellikle Humanoid sağlığını zamanla yeniler. Bunu devre dışı bırakmak, karakterin sağlık yenilemesini engeller. |
| Humanoid | Humanoid | Humanoid ile ilgili özellikleri yönetir, örneğin Humanoid.Health, Humanoid.WalkSpeed, Humanoid.DisplayDistanceType vb. |
| NPC | Script | Göç etme, saldırma gibi karaktere özel davranışları tanımlar. Aşağıdaki nesneleri içerir: Maid (ModuleScript), kullanılan kaynakları serbest bırakmada yararlı bir sınıf tanımlar. Ragdoll (ModuleScript), bir karakteri gevşek fizik etkisi olan bir bedene dönüştüren bir işlev tanımlar (birçok yardımcı işlev tanımlayan bir RigTypes ModuleScript içerir). |
| RbxNpcSounds | Script | Koşma, ölme gibi karakter ses efektleri ile ilgili davranışları tanımlar ve yönetir. |
| BodyParts | BasePart | Motor6D veya kısıtlama nesneleri aracılığıyla HumanoidRootPart'a veya yanındaki beden parçalarına bağlı çeşitli karakter beden parçaları. Daha fazla ayrıntı için BodyParts bölümüne bakın. |
| HumanoidRootPart | BasePart | İskeletin kökü olarak kabul edilen özel görünmez bir parçadır; bu yapı, karakterin Model'inin PrimaryPart'ıdır. |
| Configuration | Configuration | Çeşitli davranışları ayarlayan değer nesnelerini içerir. Daha fazla detay için Configuration bölümüne bakın. |
Tasarım Notları
NPC kitini kullanırken aşağıdaki tasarım notlarını aklınızda bulundurun:
Bir NPC'nin görsel görünümü, çeşitli [BodyParts] nesnelerini ekleyerek/değiştirerek ve Accessory nesneleri ekleyerek özelleştirilebilir.
Askerler, Salya Akan Zombi ve NP-C 9000 Robotlar iskeletlerinin temeli olarak Rthro kullanmaktadır. Ancak, RO-01 Robotlar, Üst Gövde'ye WeldConstraints kullanarak bağlanan itici parçalar ekleyen modifiye edilmiş bir Rthro tabanını kullanmaktadır. Bu şekilde basit eklemleri kullanmak, karakterleriniz için ekstra geometriler dahil etmenizi sağlar, bu da orijinal temel iskeleti değiştirmeden mümkündür.
Temel bir düzeyde, NPC animasyonları, Animate script pozisyonları içindeki mevcut Animasyon nesnelerinin AnimationId'sini değiştirerek veya Animasyonlar klasöründekileri değiştirerek özelleştirilebilir. Bu tür bir değişim esasen bir varlık takasıdır – daha ince ayrıntıları değiştirmek için mevcut animasyonların özel kopyalarını oluşturabilirsiniz ve farklı koşullar altında animasyonları oynatmak için Animate veya NPC scriptlerini doğrudan düzenleyebilirsiniz. Daha fazla bilgi için Animasyon bölümüne bakın.
Animate
NPC Model'indeki Animate Script, animasyon ile ilgili konfigürasyonları yönetir ve aşağıdaki nesneleri içerir:
| Nesne adı veya [Tip] | Tip | Açıklama |
|---|---|---|
| ScaleDampeningPercent | NumberValue | Karakter ölçeklendiğinde animasyon hızlarının nasıl değiştirileceğini tanımlar (1'den küçük bir değer, animasyonun oynatım hızının ters orantılı olarak değişeceğini belirtir). |
| PlayEmote | BindableFunction | Bir poz almayı zorlamak amacıyla diğer scriptler tarafından çağrılabilir. |
| [Pose] | StringValue | Boşta, zıplama, yürüme vb. gibi oynanabilir animasyon kategorisine referans. Bu nesne, herhangi bir sayıda Animasyonı içerebilir. Bu Animasyonlar, poz alındığında çalınacak birden fazla animasyon arasından önceliklendiren bir Ağırlık (NumberValue) içerir; genellikle boşta ve dans pozlarına çeşitlilik eklemek için kullanılır. |
BodyParts
NPC Model'indeki BodyPart BasePart, çeşitli karakter beden parçalarını temsil eder ve aşağıdaki nesneleri içerir:
| Nesne adı veya [Tip] | Tip | Açıklama |
|---|---|---|
| AvatarPartScaleType | StringValue | Bölümün nasıl ölçekleneceğini belirler; değerler Klasik, OranlarNormal veya Oranlarİnce olabilir. |
| OriginalSize | Vector3Value | Karakter ölçeği 1 iken bölümün boyutunu belirler. |
| [Attachment] | Attachment | Bireysel parçaya göre bir noktayı tanımlar; scriptler, efektler ve Tool veya Accessory gibi nesneler konumlandırma sırasında bu noktayı kullanabilir. |
| [Motor6D] | Motor6D | İki beden parçası arasındaki animasyonlu eklem. Animator, bir animasyon oluşturulduğunda kullanılan Motor6D'lerin adının tutarlı olmasına bağlıdır, bu nedenle bu nesnenin adını değiştirmekten kaçının. |
| [Joint] | WeldConstraint, Constraint, JointInstance | İki beden parçası arasındaki animasyonsuz eklem. |
| [Sound] | Sound | Genellikle baş veya HumanoidRootPart içinde bulunur; RbxNpcSounds scripti tarafından kontrol edilen rig içindeki sesleri çalar. |
Configuration
Her NPC, değer nesnelerinin bir konteyneri olarak işlev gören bir Configuration nesnesini içinde barındırır. Bu nesneler, NPC scripti tarafından çeşitli davranışları ayarlamak için kullanılır. Aksi belirtilmedikçe, bu ayarlar tüm karakterler için geçerlidir.
| Nesne adı veya [Tip] | Tip | Açıklama |
|---|---|---|
| DestroyOnDeath | BoolValue | Bir NPC öldükten kısa bir süre sonra tamamen yok olmasını sağlar. Ragdoll'lar için kalıcı olmalarını sağlamak adına bunu devre dışı bırakın. |
| PatrolEnabled | BoolValue | NPC'nin başlangıç konumu etrafında dolaşmasını sağlar. |
| PatrolRadius | NumberValue | NPC'nin başlangıç konumundan ne kadar uzağa gidebileceğini tanımlar; PatrolEnabled doğruysa geçerlidir. |
| RagdollEnabled | BoolValue | NPC'nin öldüğünde gevşek hale gelmesini sağlar, parçalanmak yerine. |
| AttackDamage | NumberValue | NPC tarafından saldırıya uğrayan bir kurbanın kaybettiği sağlık miktarını tanımlar. Bu yalnızca Zombi ve Asker kitleri için geçerlidir. |
| AttackDelay | NumberValue | Ateşler arasında geçmesi gereken minimum saniye sayısını tanımlar. Bu yalnızca Asker kitleri için geçerlidir. |
| AttackMode | NumberValue | Askerin, etiketleme sistemi temelinde neye saldıracağını belirtir. Bu yalnızca Asker kitleri için geçerlidir. |
| AttackRadius | NumberValue | NPC'nin potansiyel bir kurbana saldırmaya çalışmadan önce ne kadar uzağa gitmesi gerektiğini tanımlar. Bu yalnızca Zombi ve Asker kitleri için geçerlidir. |
| ClipCapacity | NumberValue | Askerin yeniden yükleme yapmadan önce ateş edebileceği mermi sayısını tanımlar. Bu yalnızca Asker kitleri için geçerlidir. |
| ReloadDelay | NumberValue | Askerin silah kesesinin yeniden yüklemesi için geçmesi gereken saniye sayısını tanımlar. Bu yalnızca Asker kitleri için geçerlidir. |
Etiketleri Atama
NPC scripti, diğer karakterler ve oyunculara karşı agresyonu yönetmek için CollectionService etiketlerini kullanır. Aşağıdaki tablodan çeşitli etiketler atanabilir:
Bir Player karakterine etiket atamak için StarterCharacterScripts içine bir Script ekleyebilir ve CollectionService:AddTag() çağrısı yapabilirsiniz. Örneğin:
local CollectionService = game:GetService("CollectionService")CollectionService:AddTag(script.Parent, "SoldierEnemy")
| Etiket | Amaç |
|---|---|
| SoldierEnemy veya SoldierFriend | Bir askerin, AttackMode yapılandırma değerine dayanarak bir diğer karaktere saldırıp saldırmamayı belirler. Askerin AttackMode 1 olarak ayarlandığında, diğer karakterlerin SoldierEnemy ile etiketlenmiş olması gerekir ki saldırılabilir kabul edilsin. Askerin AttackMode 2 olduğunda, SoldierFriend etiketi olmayan tüm nesneler saldırılabilir olarak kabul edilir. Askerin AttackMode 3 olduğunda, bu etiketler tamamen göz ardı edilir ve asker tüm karakterlere saldırır. |
| ZombieFriend | Bu etiket, zombinin bir karaktere saldırmaması gerektiğini belirlemesi için kullanılır. Uygulandığında, zombi etiketli karaktere karşı uysal hale gelir. |



