NPC (ตัวละครที่ไม่ใช่ผู้เล่น) สามารถเพิ่มความลึกให้กับประสบการณ์ได้มาก ตัวละคร NPC ต่อไปนี้สามารถปรับแต่งได้ทางสายตา, พฤติกรรมที่ปรับแก้, และซอมบี้/ทหารสามารถปกป้องพื้นที่ด้วยการโจมตีผู้เล่นหรือตัวละครอื่น ๆ โดยใช้ระบบ แท็ก เพื่อกำหนดพฤติกรรม
เพื่อใช้ NPC ในเกมของคุณ:
บนหน้าสินค้า NPC คลิกที่ปุ่มสีเขียว รับ และยืนยันการทำธุรกรรม
ใน Studio, เปิด Toolbox
เลือกส่วน คลังสินค้า ของ toolbox

ค้นหา NPC และคลิกเพื่อเพิ่มมันเข้าไปในที่
โครงสร้างตัวละคร
โมเดล NPC แต่ละตัวมักจะมีวัตถุต่อไปนี้:
| ชื่อวัตถุหรือ [ประเภท] | ประเภท | คำอธิบาย |
|---|---|---|
| แอนิเมชัน | Folder | มี Animations เช่น AttackAnimation หรือ DeathAnimation |
| ท่าตั้งต้น | Folder | มีข้อมูลเกี่ยวกับการตั้งท่า |
| Animate | Script | โหลดและเล่นแอนิเมชันบนโครงตัวละคร ดู Animate สำหรับข้อมูลเพิ่มเติม |
| [อุปกรณ์เสริม] | Accessory | หนึ่งในหลาย ๆ Accessories สำหรับ NPC เช่นหมวก อาวุธ เป็นต้น |
| สุขภาพ | Script | มักจะฟื้นฟูสุขภาพของ Humanoid ตามเวลา การปิดใช้งานนี้จะป้องกันไม่ให้ตัวละครฟื้นฟูสุขภาพ |
| Humanoid | Humanoid | จัดการคุณสมบัติที่เกี่ยวข้องกับ Humanoid เช่น Humanoid.Health, Humanoid.WalkSpeed, Humanoid.DisplayDistanceType เป็นต้น |
| NPC | Script | กำหนดพฤติกรรมเฉพาะตัวละคร เช่น การเร่ร่อน การโจมตี ฯลฯ มีพ่อแม่วัตถุต่อไปนี้: Maid (ModuleScript) กำหนดคลาสที่มีประโยชน์ในการปล่อยทรัพยากรที่ใช้งาน Ragdoll (ModuleScript) กำหนดฟังก์ชันที่เปลี่ยนตัวละครให้เป็นร่างกายที่มีฟิสิกส์หลวม (มีพ่อแม่ที่ RigTypes ModuleScript ที่กำหนดฟังก์ชันช่วยเหลือหลายฟังก์ชัน) |
| RbxNpcSounds | Script | กำหนดและจัดการพฤติกรรมที่เกี่ยวข้องกับเสียงของตัวละคร เช่น การวิ่ง การตาย เป็นต้น |
| BodyParts | BasePart | ส่วนต่าง ๆ ของร่างกายตัวละครที่เชื่อมต่อกับ HumanoidRootPart หรือส่วนของร่างกายที่อยู่ใกล้เคียงผ่าน Motor6D หรือวัตถุข้อกำหนด ดู BodyParts สำหรับข้อมูลเพิ่มเติม |
| HumanoidRootPart | BasePart | ส่วนพิเศษที่มองไม่เห็นซึ่งถือว่าเป็นรากของโครง; สิ่งนี้ยังเป็น PrimaryPart ของ Model ของตัวละคร |
| Configuration | Configuration | มีวัตถุค่าที่ปรับแต่งพฤติกรรมต่าง ๆ ดู Configuration สำหรับข้อมูลเพิ่มเติม |
หมายเหตุการออกแบบ
เมื่อใช้ชุด NPC ให้พิจารณาหมายเหตุการออกแบบต่อไปนี้:
รูปลักษณ์ของ NPC สามารถปรับแต่งได้โดยการเพิ่ม/แก้ไขวัตถุ [BodyParts] และการเพิ่มวัตถุ Accessory
ทหาร, ซอมบี้น้ำลายฟูมฟาย, และหุ่นยนต์ NP-C 9000 ใช้ Rthro เป็นฐานสำหรับโครงของพวกเขา อย่างไรก็ตาม RO-01 หุ่นยนต์ใช้ฐาน Rthro ที่แก้ไขซึ่งเพิ่มส่วนที่เป็นทรัสเตอร์ที่เชื่อมต่อกับ UpperTorso โดยใช้ WeldConstraints การใช้ข้อต่อที่ง่ายในลักษณะนี้ให้คุณรวมรูปทรงพิเศษสำหรับตัวละครของคุณโดยไม่เปลี่ยนแปลงโครงฐานต้นฉบับ
ในระดับพื้นฐาน, การแอนิเมตของ NPC สามารถปรับแต่งได้โดยการเปลี่ยน AnimationId ของวัตถุ Animation ที่มีอยู่ภายในท่าของสคริปต์ Animate หรือที่อยู่ภายในโฟลเดอร์ Animations การเปลี่ยนแปลงแบบนี้เรียกว่าเป็นการแลกเปลี่ยนทรัพย์สิน - เพื่อเปลี่ยนรายละเอียดที่ละเอียดมากขึ้น คุณสามารถสร้างสำเนาที่กำหนดเองของแอนิเมชันที่มีอยู่ และในการเล่นแอนิเมชันภายใต้เงื่อนไขที่แตกต่างกัน คุณสามารถแก้ไขสคริปต์ Animate หรือ NPC โดยตรง สำหรับข้อมูลเพิ่มเติมให้ดูที่ Animation
แอนิเมต
สคริปต์ Animate Script ใน Model ของ NPC จัดการกับการตั้งค่าที่เกี่ยวข้องกับ แอนิเมชัน และมีวัตถุต่อไปนี้:
| ชื่อวัตถุหรือ [ประเภท] | ประเภท | คำอธิบาย |
|---|---|---|
| ScaleDampeningPercent | NumberValue | กำหนดว่าความเร็วของแอนิเมชันจะถูกปรับอย่างไรเมื่อขนาดของตัวละครเปลี่ยน (น้อยกว่า 1 หมายถึงการเล่นแอนิเมชันจะปรับตัวแปรตามอัตราส่วนของตัวละคร) |
| PlayEmote | BindableFunction | สามารถเรียกใช้โดยสคริปต์อื่น ๆ เพื่อบังคับให้ทำท่า |
| [Pose] | StringValue | อ้างอิงถึงหมวดหมู่แอนิเมชันที่เล่นได้เช่น นิ่ง กระโดด เดิน เป็นต้น วัตถุนี้สามารถเป็นพ่อแม่ของแอนิเมชันจำนวนใดก็ได้ Animations แอนิเมชัน Animations เหล่านี้เป็นพ่อแม่ของ Weight (NumberValue) ที่กำหนดลำดับความสำคัญของแอนิเมชันหลายตัวเพื่อเล่นในขณะที่ท่านั้นถูกตั้งอยู่ โดยปกติใช้เพื่อเพิ่มความหลากหลายให้กับท่าทางนิ่งและเต้นรำ |
BodyParts
วัตถุ BodyPart BasePart ใน 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 ทั้งหมดถูกทำลายอย่างรวดเร็วหลังจากที่มันตาย ปิดการใช้งานนี้สำหรับ Ragdolls เพื่อให้มันมีความคงทน |
| 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 | แท็กนี้ถูกใช้โดยซอมบี้เพื่อกำหนดว่าซอมบี้ควรจะไม่โจมตีตัวละครหรือไม่ เมื่อแท็กได้รับการปรับใช้อย่างที่กล่าวไว้ ซอมบี้จะกลายเป็นมารยาทต่อเจ้าของที่ถูกแท็ก |



