เพื่อช่วยในการสร้างประสบการณ์การต่อสู้ที่แข่งขันได้ มีอาวุธที่ได้รับการรับรองหลายรายการสำหรับใช้งานในประสบการณ์ใด ๆ ระบบหลักมีอาวุธที่ใช้งานแบบพุ่งด้วยกล้องมุมเหนือไหล่ และการตั้งค่าความเร็วของกระสุนให้สูงพอสามารถจำลองอาวุธแบบเรย์แคสติ้งเช่นปืนเลเซอร์ได้

ในการใช้เวลากว่านี้ในประสบการณ์ของคุณ:
- เลือกอาวุธจากด้านล่าง โดยการนำทางไปยังลิงก์ห้องสมบัติ
ในหน้ารายการของอาวุธ ให้คลิกปุ่มสีเขียว รับ และยืนยันการทำธุรกรรม
ใน Studio ให้เปิด Toolbox
เลือกส่วน คลัง ใน Toolbox ของคุณ
ค้นหาอาวุธและคลิกเพื่อเพิ่มมันเข้าไปในสถานที่ เมื่อมีการแจ้งเตือนว่าจะแทนที่เครื่องมือใน Starter Pack ให้คลิก ใช่ หากคุณต้องการให้ผู้เล่นเริ่มต้นด้วยอาวุธในกระเป๋าของพวกเขาหรือคลิก ไม่ เพื่อวางอาวุธในโลก 3D เป็นการเก็บเกี่ยว
หากนี่เป็น ครั้งแรก ที่นำอาวุธที่ได้รับการรับรองเข้ามา ให้ย้ายโฟลเดอร์ WeaponsSystem ไปยัง ServerScriptService เพื่อทำหน้าที่เป็น โฟลเดอร์ระบบ ที่รวมสำหรับอาวุธที่ได้รับการรับรองทั้งหมดในประสบการณ์

โครงสร้างโฟลเดอร์ระบบ
โฟลเดอร์ WeaponsSystem เป็นโฟลเดอร์รวมที่มีทรัพย์สิน ค่าคอนฟิก และสคริปต์ที่ขับเคลื่อนอาวุธที่ได้รับการรับรองทั้งหมดในประสบการณ์ หากตั้งอยู่ใน ServerScriptService จะมีผลเหนือกว่าโฟลเดอร์ WeaponsSystem ที่เทียบเคียงได้ซึ่งอาจอยู่ในแต่ละอาวุธ

โฟลเดอร์ WeaponsSystem ประกอบด้วยตัวอย่างต่อไปนี้:
- WeaponTypes (Folder) – ระบุประเภทของอาวุธทั้งหมด
- ServerWeaponsScript (Script)
- Version (IntValue)
- ClientWeaponScript (LocalScript)
- NetworkingCallbacks (ModuleScript)
- WeaponData (RemoteEvent)
- WeaponsSystem (ModuleScript)
ภายในโฟลเดอร์ WeaponsSystem แง่มุมต่าง ๆ ถูกควบคุมโดย ModuleScripts ต่อไปนี้:
| แง่มุม | จัดการหลักใน... |
|---|---|
| ฟังก์ชันการทำงานของอาวุธ |
|
| กล้องบนไหล่ |
|
| GUI อาวุธ |
|
โครงสร้างอาวุธ
อาวุธที่ได้รับการรับรองเป็น Tools และมีชื่อเมื่อปรากฏในกระเป๋าของผู้เล่น อาวุธแต่ละชนิดมีโครงสร้างที่มีลำดับชั้นที่คล้ายกัน
ประเภทอาวุธ
ประเภทของอาวุธ WeaponType StringValue สอดคล้องกับ ModuleScript สำหรับอาวุธในโฟลเดอร์ WeaponsSystem/WeaponTypes ค่าพื้นฐานสองค่าคือ BulletWeapon และ BowWeapon
โมเดลของอาวุธ
อาวุธแต่ละชนิดประกอบด้วย Model ที่ประกอบด้วยหนึ่งหรือมากกว่าส่วน BaseParts เพื่อสร้างอาวุธทางกายภาพ หนึ่งในนี้ควรตั้งเป็น PrimaryPart ของโมเดล

โมเดลยังรวมถึงลูกหลานที่สำคัญต่อไปนี้ซึ่งอาจมีพ่อแม่เป็นส่วน BaseParts หนึ่งในโมเดล:
- ลูกหลานเพิ่มเติมสำหรับ ตัวเลือกเฉพาะ
ตัวจับอาวุธ
ส่วน Handle กำหนดที่ที่ตัวละครของผู้เล่นถืออาวุธ ต้องเป็น Part ชื่อว่า Handle และต้องเป็นลูกหลานโดยตรงของอาวุธ (เครื่องมือ)
โฟลเดอร์การกำหนดค่า
โฟลเดอร์ Configuration ประกอบด้วยประเภท "ค่า" เฉพาะสำหรับพฤติกรรมของอาวุธ นอกเหนือจากค่าส่วนสำคัญแล้ว คุณยังสามารถเพิ่มรายการการกำหนดค่าเพิ่มเติมสำหรับ ตัวเลือกเฉพาะ เมื่อมีความเหมาะสม
ด้านล่างนี้เป็นการกำหนดค่าพื้นฐานและค่าพื้นฐานของพวกเขา:
| รายการ | คำอธิบาย | ค่าเริ่มต้น |
|---|---|---|
| AmmoCapacity | จำนวนกระสุนในแต่ละ "คลิปกระสุน" ก่อนที่ผู้เล่นจะต้องบรรจุกระสุนใหม่ หมายเหตุว่า กระสุนไม่มีที่สิ้นสุดและค่าข้อนี้ไม่ได้กำหนดว่าผู้เล่นมีจำนวนเท่าไหร่ | 30 |
| FireMode | เลือกจาก Semiautomatic (ยิงหนึ่งครั้งต่อการคลิก/สัมผัส), Automatic (การยิงต่อเนื่อง) หรือ Burst (ยิงเป็นชุดเท่ากับ NumBurstShots ในแต่ละครั้งที่คลิก/สัมผัส) | Semiautomatic |
| ShotCooldown | ระยะเวลารอการยิงขั้นต่ำระหว่างการคลิก สำหรับอาวุธที่มี FireMode เป็น Automatic จะเป็นเวลาระหว่างการยิงเมื่อกดปุ่มยิงหรือตอนคลิกค้างไว้ | 0.1 |
| BurstShotCooldown | เวลาระหว่างการยิงแต่ละครั้งในชุด; มีความสำคัญเฉพาะเมื่อคุณตั้ง FireMode เป็น Burst | ค่า ShotCooldown |
| NumBurstShots | จำนวนกระสุนต่อหนึ่งคลิก/ชูขึ้น; มีความสำคัญเฉพาะเมื่อคุณตั้ง FireMode เป็น Burst | 3 |
| HitDamage | จำนวนความเสียหายที่ทำให้เกิดจากการโดนโดยตรง | 10 |
| FullDamageDistance | ระยะสูงสุดที่กระสุนจะทำความเสียหายเต็มที่ อะไรก็ตามที่ได้รับการตีเกินจากระยะนี้จะได้รับความเสียหายน้อยลงเรื่อย ๆ เมื่อระยะเข้าใกล้ค่า ZeroDamageDistance | 1000 |
| ZeroDamageDistance | อะไรก็ตามที่ได้รับการตีที่ระยะนี้หรือเกินกว่านั้นจะไม่ได้รับความเสียหาย | 10000 |
| BulletSpeed | ความเร็วที่กระสุน/พุ่งออกเมื่อยิง การตั้งค่านี้ให้มีค่ามาก ๆ เช่น 20000 สามารถจำลองอาวุธแบบเรย์แคสติ้งเช่นปืนเลเซอร์ได้ | 1000 |
| MaxDistance | ระยะสูงสุดที่กระสุนนั้นจะบินไปก่อนที่จะหายไป | 2000 |
| MinSpread | จำนวนการกระจายขั้นต่ำสำหรับอาวุธ | 0 |
| MaxSpread | จำนวนการกระจายสูงสุดสำหรับอาวุธ | ค่า MinSpread |
| GravityFactor | จำนวนที่แรงโน้มถ่วงควรมีผลต่อกระสุน/พุ่งแต่ละอัน ตัวอย่างเช่น ค่านี้สำหรับ คันธนู คือ 1 เพราะลูกธนูจะเริ่มขณะบิน แต่ค่านี้สำหรับ ปืนจรวด คือ 0 เพราะจรวดที่ยิงจะสามารถเคลื่อนที่ไปได้ในแนวตรง | 0 |
| HasScope | ตั้งค่าเป็น true หากคุณต้องการใช้สโคปที่ระบุใน Weapons System GUI | false |
| ReloadAnimation | ชื่อแทร็กการบรรจุกระสุนใน Assets/Animations ของ ระบบโฟลเดอร์ | RifleReload |
| AimTrack | ชื่อแทร็กการเล็งใน Assets/Animations ของ ระบบโฟลเดอร์ | RifleAim |
| AimZoomTrack | ชื่อแทร็กการซุมเพื่อเล็งใน Assets/Animations ของ ระบบโฟลเดอร์ | RifleAimDownSights |
| RecoilMin | การสะท้อนต่ำสุดที่เพิ่มขึ้นสำหรับแต่ละกระสุน | 0.05 |
| RecoilMax | การสะท้อนสูงสุดที่เพิ่มขึ้นสำหรับแต่ละกระสุน | 0.5 |
| TotalRecoilMax | การสะสมการสะท้อนสูงสุดทั้งหมด ค่าการสะท้อนปัจจุบันของอาวุธจะไม่เกินค่านี้ | 2 |
| RecoilDecay | อัตราการลดของการสะท้อน ค่าที่แสดงถึงอัตราส่วนที่การสะท้อนลดลงหลังจากการยิง | 0.825 |
| RecoilDelayTime | ระยะเวลาก่อนที่การยิง/คลิกจะเพิ่มการสะท้อนไปยังกล้อง | 0.07 |
| StartupTime | ระยะเวลาหลังจากการนำอาวุธไปใช้งานก่อนที่ผู้เล่นจะสามารถยิงได้ สิ่งนี้จะช่วยป้องกันไม่ให้ผู้เล่นยิงกระสุนเดียวจากหลายๆ อาวุธในระยะเวลาสั้น ๆ | 0.2 |
| FiredPlaybackSpeedRange | จำนวนที่สูงต่ำของเสียง Fired ของอาวุธ สามารถตั้งค่านี้เป็น 0 เพื่อให้เล่นที่ความเร็วเดียวกันเสมอ | 0.1 |
| NumProjectiles | จำนวนกระสุน/พุ่งออกที่จะยิงพร้อมกันเมื่อคุณคลิก/สัมผัสเพียงครั้งเดียว สิ่งนี้มีประโยชน์สำหรับอาวุธเช่น ปืนลูกซอง ที่ยิงกระสุนหลายกระสุนพร้อมกัน หมายเหตุว่าหนึ่งการยิงจะใช้กระสุนเพียงหนึ่งเท่านั้นไม่ว่าจะตั้งค่าค่านี้เป็นเท่าใด | 1 |
ตัวเลือกเฉพาะ
คุณสามารถเพิ่ม/ปรับแต่งตัวเลือกต่อไปนี้สำหรับอาวุธใด ๆ การปรับแต่งเหล่านี้จำเป็นต้องมีการเปลี่ยนแปลงใน Model ของอาวุธ, Configuration ของอาวุธ หรือทั้งสองอย่าง บางการกำหนดค่าขึ้นอยู่กับตัวอื่น ๆ เช่น อนุภาคปลายปืน ซึ่งต้องใช้ลูกหลานที่จำเป็นสำหรับ เอฟเฟกต์/เสียงที่พุ่งออกมาและการตี
เสียงและการแอนิเมชันของบิด
บิดของอาวุธคือส่วนที่เคลื่อนที่ไปข้างหลังและข้างหน้าเมื่อยิง
- ลูกหลานของ โมเดลอาวุธ
| Bolt | BasePart ที่เคลื่อนเมื่อยิงอาวุธ | |
| BoltMotor | Motor6D ใช้เพื่อทำอนิเมชันครั้งบิด ตรวจสอบให้แน่ใจ rằngคุณตั้งค่า Part0 ของมอเตอร์ให้เป็น PrimaryPart ของโมเดลอาวุธและ Part1 เป็นส่วน Bolt | |
| BoltMotorStart | Attachment ที่ตำแหน่งบนพ่อแม่ BasePart จะกำหนดที่ตั้งของบิดเมื่ออยู่ในสภาพสงบ | |
| BoltMotorTarget | Attachment ที่ตำแหน่งบนพ่อแม่ BasePart จะกำหนดที่ตั้งของบิดเมื่อยิง | |
| BoltOpenSound | Sound ที่เล่นเมื่อบิดเปิด | optional |
| BoltCloseSound | Sound ที่เล่นเมื่อบิดปิด | optional |
- ลูกหลานของโฟลเดอร์ การกำหนดค่า ของอาวุธ
| รายการ | คำอธิบาย | ค่าเริ่มต้น |
|---|---|---|
| ActionOpenTime | เวลาที่ใช้สำหรับอนิเมชันของบิดในการเปิด | 0.025 |
| ActionCloseTime | เวลาที่ใช้สำหรับอนิเมชันของบิดในการปิด | 0.075 |
การขว้างกระสุนทิ้ง
อาวุธสามารถรวมถึงกระสุนทางกายภาพที่คายออกมาเมื่อยิงและตกลงยังพื้น
- ลูกหลานของ โมเดลอาวุธ
| CasingEjectPoint | Attachment ที่ตำแหน่งบนพ่อแม่ BasePart จะกำหนดว่าส่วนใดของกระสุนคายออก |
- ลูกหลานของโฟลเดอร์ การกำหนดค่า ของอาวุธ
| รายการ | คำอธิบาย | ค่าเริ่มต้น |
|---|---|---|
| CasingEffect | ชื่อของ BasePart สำหรับกระสุนใน Assets/Effects/Casings ของ ระบบโฟลเดอร์ | |
| CasingEjectSpeedMin | ความเร็วขั้นต่ำในการคายกระสุน | 15 |
| CasingEjectSpeedMax | ความเร็วสูงสุดในการคายกระสุน | 18 |
| CasingHitSound | Sound ที่เล่นเมื่อกระสุนปะทะพื้น | optional |
เอฟเฟกต์และเสียงการพุ่ง/การตี
คุณสามารถกำหนดค่ากระสุนทางกายภาพสำหรับอาวุธใด ๆ ได้ พร้อมกับ Sounds, Beams, และ ParticleEmitters สำหรับเอฟเฟกต์การตีและเอฟเฟกต์พิเศษอื่น ๆ
- ลูกหลานของโฟลเดอร์ การกำหนดค่า ของอาวุธ
| รายการ | คำอธิบาย | ค่าเริ่มต้น |
|---|---|---|
| ShotEffect | ชื่อของเอฟเฟกต์การยิงซึ่งเก็บไว้ใน Assets/Effects/Shots ของ ระบบโฟลเดอร์ | |
| ShouldMovePart | ตั้งค่าเป็น true หาก ShotEffect ของอาวุธควรเคลื่อนที่ไปกับกระสุนหรือ false หากไม่สามารถทำได้ คุณควรกำหนดค่านี้เป็น true หากมีวัตถุที่มีลักษณะชัดเจนว่าขยับไปพร้อมกับการยิง เช่น ลูกธนูหรือลูกพี่ลูกน้อง | false |
| BeamFadeTime | ระยะเวลาที่ใช้ให้ Beam0 หรือ Beam1 (ดู ด้านล่าง) หายหลังจากที่กระสุน/พุ่งโดนสิ่งใด สิ่งนี้จะไม่ถูกใช้ในการย่อหายด้วยโค้ดโดยค่าเริ่มต้น | 0 |
| BeamWidth0 | ความหนาของ Beam0 หรือ Beam1 ที่ Attachment0 (ดู ด้านล่าง) | 1.5 |
| BeamWidth1 | ความหนาของ Beam0 หรือ Beam1 ที่ Attachment1 (ดู ด้านล่าง) | 1.8 |
| NumHitParticles | จำนวนอนุภาคที่ HitParticles (ดู ด้านล่าง) จะปล่อยออกมา | 3 |
| HitParticlesUsePartColor | ตั้งค่าเป็น true หากคุณต้องการให้อนุภาคที่เกิดจากการตีมีสีตามพื้นผิวที่ตี false หากคุณต้องการให้อนุภาคที่ตีไม่เปลี่ยนสี | true |
ลูกหลานของ ShotEffect
ลูกหลานของ ShotEffect ที่ระบุในส่วนก่อนหน้านี้
| Flying | Sound ที่เล่นขณะกระสุน/พุ่งอยู่ | optional |
| Beam0 | ช่องแรกสำหรับ Beam ที่ติดตามหลังจากกระสุน/พุ่ง อย่าลืมตั้งค่า Attachment0 และ Attachment1 | optional |
| Beam1 | ช่องที่สองสำหรับ Beam ที่ติดตามหลังจากกระสุน/พุ่ง อย่าลืมตั้งค่า Attachment0 และ Attachment1 | optional |
| Attachment0 | Attachment ที่ตำแหน่งของพ่อแม่ BasePart จะกำหนดจุดที่อยู่ด้านหลังของลำแสงที่ติดตาม; อย่าลืมตั้งค่า Beam.Attachment0 ในทั้ง Beam0 และ Beam1 เป็นสิ่งนี้ | optional |
| Attachment1 | Attachment ที่ตำแหน่งของพ่อแม่ BasePart จะกำหนดจุดที่อยู่ด้านหน้าของลำแสงที่ติดตาม; อย่าลืมตั้งค่า Beam.Attachment1 ในทั้ง Beam0 และ Beam1 เป็นสิ่งนี้ | optional |
| TrailParticles | ParticleEmitter ที่เป็นลูกหลานโดยตรงของ Attachment0; จะปล่อยขณะกระสุน/พุ่งเคลื่อนที่ | optional |
| LeadingParticles | ParticleEmitter ที่เป็นลูกหลานโดยตรงของ Attachment1; จะปล่อยขณะกระสุน/พุ่งเคลื่อนที่ | optional |
| HitEffect | Attachment ที่จะตั้งค่าเป็น Beam.Attachment1 ของ Beam0 เมื่อกระสุน/พุ่งถูกตี คุณต้องระบุ Beam0 และการเชื่อมต่อของมันเพื่อให้ทำงานได้อย่างถูกต้อง | optional |
| HitSound | Sound ที่เป็นลูกหลานเป็นลูกหลานโดยตรงของ HitEffect; จะเล่นเมื่อกระสุน/พุ่งชน | optional |
| HitParticles | Sound ที่เป็นลูกหลานเป็นลูกหลานโดยตรงของ HitEffect; จะปล่อยเมื่อกระสุน/พุ่งชน | optional |
| [ProjectilePart] | เป็น Part หรือ MeshPart ที่คุณต้องการให้แสดงเป็นพุ่งจริง อย่าลืมตั้งค่า ShouldMovePart ที่ระบุในส่วนก่อนหน้าเป็น true หากมีวัตถุที่เห็นได้ที่นี่ | optional |
อนุภาคปลายปืน
ตัวเลือกนี้ปล่อยอนุภาคจาก ParticleEmitter ที่ระบุเมื่อปืนที่ปลาย TipAttachment Attachment ถูกยิง
ลูกหลานการกำหนดค่า:

- NumMuzzleParticles (IntValue) (optional) — จำนวนอนุภาคที่มุมปลายกระสุนจะถูกปล่อยออกมา ค่าปริยายคือ 50
สำหรับเอฟเฟกต์ยิงที่ระบุ ให้เพิ่มทรัพย์สิน ParticleEmitter ไว้ภายใน WeaponsSystem/Assets/Effects/Shots ซึ่งตั้งชื่อว่า MuzzleParticles

การยิงที่ปลายปืน
ตัวเลือกนี้สร้างเอฟเฟกต์ Beam ที่เห็นได้เมื่อปืนถูกยิง
ลูกหลานของโมเดล:

- MuzzleFlash0 (Attachment) — ใช้เพื่อระบุด้านหนึ่งของการยิงที่ปลายปืน ขนาดที่ไม่สำคัญ
- MuzzleFlash1 (Attachment) — ใช้เพื่อระบุด้านตรงข้ามของการยิงที่ปลายปืน ขนาดที่ไม่สำคัญ
- MuzzleFlash (Beam) — ตรวจสอบให้แน่ใจว่าได้ตั้งค่า Attachment0 เป็น MuzzleFlash0 และ Attachment1 เป็น MuzzleFlash1
ลูกหลานของการกำหนดค่า:

- MuzzleFlashRotation0 (NumberValue) (optional) — การหมุนขั้นต่ำของการยิงที่ปลายปืน; ค่าเริ่มต้นคือ -math.pi
- MuzzleFlashRotation1 (NumberValue) (optional) — การหมุนสูงสุดของการยิงที่ปลายปืน; ค่าเริ่มต้นคือ math.pi
เส้นทางอนุภาค
ตัวเลือกนี้สร้างเส้นทางลักษณะเปลี่ยนความยาวจากอาวุธไปยังจุดการกระทบของพุ่ง
ลูกหลานการกำหนดค่า:

- TrailLength (NumberValue) (optional) — ความยาวของเส้นทางที่อยู่เบื้องหลังกระสุน/พุ่ง; ค่าเริ่มต้นคือ nil ซึ่งหมายความว่าความยาวของเส้นทางจะถูกคำนวณโดยใช้ TrailLengthFactor
- TrailLengthFactor (NumberValue) (optional) — ความยาวของเส้นทางจะถูกตั้งค่าเป็นค่าที่วัดโดยการคูณระยะทางที่กระสุน/พุ่งเคลื่อนที่ในเฟรมสุดท้าย; ค่าเริ่มต้นคือ 1 หมายเหตุว่าสิ่งนี้จะถูกยกเลิกหากคุณรวม TrailLength
- ShowEntireTrailUntilHit (BoolValue) (optional) — ตั้งค่าเป็น true เพื่อให้แสดงเส้นทางจากตัวป้องกันทั้งหมดไปยังที่ที่กระสุนอยู่; อันนี้จะยกเลิกทั้ง TrailLength และ TrailLengthFactor และเส้นทางจะหายไปเมื่อกระสุนโดนสิ่งใดตั้งค่าเป็น false เพื่อใช้ตัวเลือกด้านบนคำนวณความยาวของเส้นทาง ค่าเริ่มต้นคือ false
มาร์คการตี
การเพิ่มรูปลักษณ์นี้จะปรากฏบนพื้นผิวที่กระสุนตีและมีประโยชน์สำหรับลูกธนู รอยกระสุน รอยไหม้ ฯลฯ
ลูกหลานการกำหนดค่า:

- HitMarkEffect (StringValue) (optional) — ชื่อของเอฟเฟกต์ที่ตีเก็บไว้ใน WeaponsSystem/Assets/Effects/HitMarks ค่าเริ่มต้นคือ BulletHole
- AlignHitMarkToNormal (BoolValue) (optional) — ตั้งค่าเป็น true หากมาร์คการตีควรเรียบไปกับพื้นผิวเหมือนรอยกระสุน หรือ false หากมาร์คการตีควรปรากฏเป็นที่ติดอยู่ในพื้นผิวจากทิศทางที่กระสุนมาจาก (เช่นลูกธนู) ค่าเริ่มต้นคือ true
คุณสามารถเพิ่มทรัพย์สินเพิ่มเติมอื่น ๆ ใน WeaponsSystem/Assets/Effects/HitMarks:

- Glow (Decal) (optional) — ปรากฏบนพื้นผิวหนัก และหลังจากนั้นจะโปร่งแสงรวดเร็ว เหมือนผลสำหรับรอยว่าเป็นผลที่ชัดเจนจากที่วัตถุถูกตี
- BulletHole (Decal) (optional) — ปรากฏบนพื้นผิวหนักและหลังจาก 4 วินาทีจะหายไปเป็นโปร่งแสงใน 1 วินาที
- ImpactBillboard (BillboardGui) (optional) — แสดงที่พื้นผิวตี แน่นอนว่าดูไปยังกล้อง
- Impact (ImageLabel) (optional) — เป็นลูกหลานของ ImpactBillboard; เริ่มโปร่งแสงเต็มที่ ขยายจนใหญ่สุดของ ImpactBillboard ในเวลา 0.1 วินาที จากนั้นหดขนาดลงเหลือครึ่งหนึ่งและหายไปจนโปร่งแสงในเวลา 0.1 วินาที
- ทุก Part/MeshPart/SpecialMesh ที่คุณต้องการให้ปรากฏเป็นกระสุนทางกายภาพ (optional) เช่น คุณสามารถรวม MeshPart ของลูกธนูและตั้งค่าตัวเลือก AlignHitMarkToNormal ที่ระบุไว้ด้านบนเป็น false จะทำให้ลูกธนูถูกติดตั้งขึ้นจากทิศทางที่คุณยิงมัน
พุ่งที่ระเบิด
พุ่งอาจรวมถึงวัตถุระเบิดเพื่อทำร้ายผู้เล่นในพื้นที่รอบ ๆ จุดตีกระทบ
ลูกหลานการกำหนดค่า:

- ExplodeOnImpact (BoolValue) (optional) — ตั้งค่าเป็น true หากคุณต้องการให้กระสุน/พุ่งของอาวุธจะระเบิดเมื่อได้รับการกระทบ false โดยค่าเริ่มต้นคือ false
- BlastDamage (NumberValue) (optional) — ความเสียหายที่ทำให้เมื่ออยู่ในศูนย์กลางของการระเบิด หมายเหตุว่าการระเบิดจะทำให้ความเสียหายลดลงเมื่อวัตถุอยู่ไกลจากศูนย์กลางการระเบิด ค่าเริ่มต้นคือ 100
อาวุธที่ชาร์จ
อาวุธที่ชาร์จ เช่น เรลกัน ต้องชาร์จขึ้นระหว่างการยิงก่อนที่จะสามารถยิงได้อีกครั้ง
ลูกหลานของโมเดล:

- Charging (Sound) (optional) — เล่นขณะชาร์จอาวุธ
- Discharging (Sound) (optional) — เล่นขณะยกเลิกการชาร์จอาวุธ สำหรับตัวอย่างหากคุณชาร์จอาวุธเพียงบางส่วนและปล่อยปุ่มยิง
- ChargeComplete (Sound) (optional) — เล่นเมื่ออาวุธชาร์จเต็มที่
- DischargeComplete (Sound) (optional) — เล่นเมื่ออาวุธถูกถอดออกอย่างสมบูรณ์
- ChargeGlow (BasePart) (optional) — วัตถุตัวนี้จะโปร่งแสงน้อยลงเมื่ออาวุธชาร์จเต็มที่ จนกระทั่งมันจะเต็มที่ใน 100%
- ChargeCompleteParticles (ParticleEmitter) (optional) — ปล่อยเมื่ออาวุธชาร์จเสร็จ สิ่งนี้สามารถเป็นลูกหลานของโมเดล BasePart หรือเป็นลูกหลานของ Attachment ภายใน BasePart
- DischargeCompleteParticles (ParticleEmitter) (optional) — ปล่อยเมื่ออาวุธถูกชาร์จจนหมดอายุ วัตถุนี้สามารถเป็นลูกหลานของโมเดล BasePart หรือเป็นลูกหลานของ Attachment ภายใน BasePart
- ChargingParticles (ParticleEmitter) (optional) — ปล่อยระหว่างที่อาวุธกำลังชาร์จ คุณสามารถรวมอนุภาคหลายตัวที่มีชื่อนี้และแต่ละตัวจะปล่อยระหว่างการชาร์จ สิ่งนี้สามารถเป็นลูกหลานของโมเดล BasePart หรือเป็นลูกหลานของ Attachment ภายใน BasePart
ลูกหลานการกำหนดค่า:

- ChargeRate (NumberValue) — อัตราที่อาวุธจะชาร์จ ค่าค่านี้ต้องระบุเพื่อระบุว่าอาวุธใช้การชาร์จ
- DischargeRate (NumberValue) (optional) — อัตราที่อาวุธจะยกเลิกการชาร์จ ค่าเริ่มต้นคือ 0 ซึ่งหมายความว่าอาวุธจะไม่ทำการชาร์จเลย
- ChargePassively (BoolValue) (optional) — ตั้งค่าเป็น true หากคุณต้องการให้อาวุธชาร์จโดยอัตโนมัติ ดังนั้นจะยิงทันทีเมื่อคุณคลิก หรือ false หากคุณต้องการคลิก/สัมผัสเพื่อชาร์จอาวุธและมียิงเมื่อชาร์จนเต็มแล้ว ค่าเริ่มต้นคือ false
- ChargingParticlesRatePerCharge (IntValue) (optional) — จำนวนอนุภาคที่จะปล่อยออกจากอนุภาค ChargingParticles ทั้งหมด คูณโดยอัตราชาร์จของอาวุธ ค่าเริ่มต้นคือ 20 หมายความว่าถ้าอาวุธชาร์จอยู่ที่ 10% อนุภาคจะถูกปล่อยออกมา 2 อนุภาค (20×0.1) และถ้าชาร์จอยู่ที่ 90% แต่ละจะปล่อย 18 อนุภาค (20×0.9)
- FireDischarge (NumberValue) (optional) — จำนวนการชาร์จที่จะลดหลังจากการยิงที่ชาร์จเต็มที่; ค่าเริ่มต้นคือ 1
- NumChargeCompleteParticles (IntValue) (optional) — จำนวนอนุภาคที่จะปล่อยออกจากอนุภาค ChargeCompleteParticles เมื่อตอนที่อาวุธถูกชาร์จเต็มที่ ค่าเริ่มต้นคือ 25
- NumDischargeCompleteParticles (IntValue) (optional) — จำนวนอนุภาคที่จะปล่อยออกจากอนุภาค DischargeCompleteParticles เมื่อตอนที่อาวุธถูกชาร์จจนเสร็จเรียบร้อย ค่าเริ่มต้นคือ 25
อาวุธธนู
อาวุธธนู เช่น คันธนูสามารถรวมถึงการสร้างสายและแขนที่สมจริงรวมถึงลูกธนูที่มองเห็นได้ติดอยู่กับสาย
นอกเหนือจากการเพิ่มลูกหลานไปยังโมเดล คุณต้องดำเนินการดังนี้:
- ทำให้อาวุธเป็น อาวุธที่ชาร์จ ตัวอย่างเช่น เพิ่ม ChargeRate ที่ต้องส่งใน Configuration ของอาวุธซึ่งระบุความเร็วที่สายถูกดึงขึ้น นอกจากนี้ ควรพิจารณาเพิ่มลูกหลานทางเลือกไปยังโมเดล เช่น เสียงการชาร์จสำหรับการดึงพื้นฐาน/แขน
ลูกหลานของโมเดล:

- LeftString (Beam) (optional) — ด้านซ้ายของสายที่เห็น
- RightString (Beam) (optional) — ด้านขวาของสายที่เห็น
- Arrow (BasePart) (optional) — ลูกธนูที่จะปรากฏเมื่อธนูถูกดึงเต็มที่ หมายเหตุว่านี่เป็นเพียงจุดที่ใช้การมองเห็นบนธนู (ลูกธนูที่ยิงจริงจะเป็น ShotEffect ตามที่ระบุใน เอฟเฟกต์/เสียงการพุ่ง/การตี)
- String1 (Attachment) (optional) — จุดกลางของสาย
- Arms (Part) (optional) — ส่วนที่ใช้เพื่อระบุวงแขนของธนูที่จำลอง ซึ่งอาจมีลูกหลานต่อไปนี้:
- LeftString0 (Attachment) (optional) — จุดที่ด้านซ้ายของสายติดอยู่กับธนู
- RightString0 (Attachment) (optional) — จุดที่ด้านขวาของสายติดอยู่กับธนู
- [SpecialMesh] (SpecialMesh) (optional) — ส่วนของธนูที่จะยืดเมื่อธนูถูกดึงออก ไม่ว่าของนี้จะต้องระบุตำแหน่ง 3D ของ 4 Vector3Value
Weapons system GUI
ระบบอาวุธหลักทำงานร่วมกับระบบนี้เพื่อปรับปรุง GUI ตามสิ่งที่เช่นการกระจายของปืน การระบุเมื่อคุณถูกตีหรือทำตีคนอื่น ๆ เป็นต้น
WeaponsSystemGui เป็นวัตถุ ScreenGui ใน WeaponsSystem/Assets ที่ถูกเชื่อมโยงกับ PlayerGui เมื่อการทำงานของประสบการณ์เริ่มต้น WeaponsSystemGui มีลูกหลาน 4 ตัว:
- ScalingElements - โฟลเดอร์ Folder ขององค์ประกอบบนหน้าจอ
- LargeTouchscreen - แฟร์ม Frame สำหรับปุ่มที่อยู่บนหน้าจอสัมผัสใหญ่
- SmallTouchscreen - แฟร์ม Frame สำหรับปุ่มที่อยู่บนหน้าจอสัมผัสเล็ก
องค์ประกอบที่ปรับขนาด
ScalingElements คือโฟลเดอร์ Folder ที่อยู่ภายใต้ WeaponsSystemGui ที่มีลูกหลานดังต่อไปนี้:
| ชื่อ | ประเภทตัวอย่าง | คำอธิบาย |
|---|---|---|
| DirectionalIndicators | Folder | โฟลเดอร์ Folder ที่เก็บ ตัวบ่งชี้ทิศทาง ทั้งหมด |
| Crosshair | Frame | แฟร์ม Frame ที่มีวัตถุต่อไปนี้: [UIAspectRationConstraint] - UIAspectRatioConstraint Bottom - ImageLabel Left - ImageLabel Right - ImageLabel Top - ImageLabel |
| HitMarker | Frame | แฟร์ม Frame ที่มีวัตถุต่อไปนี้: [UIAspectRatioConstraint] - UIAspectRatioConstraint HitMarkerImage - ImageLabel ที่ปรากฏและหายไปเมื่อผู้เล่นตีตัวละครผู้เล่นคนอื่นสำเร็จ |
LargeTouchscreen
LargeTouchscreen คือแฟร์ม Frame ที่มีปุ่มที่แสดงระหว่างหน้าจอสัมผัสใหญ่ LargeTouchscreen มีลูกหลานดังต่อไปนี้:
- AimButton (ImageButton)
- FireButton (ImageButton)
สโคป
Scope คือแฟร์ม Frame ที่มี ScopeImage (ImageLabel) ซึ่งแสดงเมื่อซูมเข้าไปในอาวุธที่มีการตั้งค่าสโคป (ดูที่ โครงสร้างอาวุธ)
สโคป มีลูกหลานดังต่อไปนี้:
| ชื่อ | ประเภทตัวอย่าง | คำอธิบาย |
|---|---|---|
| ScopeInstance | Frame | แฟร์ม Frame ที่มีสินทรัพย์ที่ใช้เมื่อซูมเข้าอาวุธด้วย HasScope ที่เปิดอยู่: [UIAspectRationConstraint] - UIAspectRatioConstraint BottomBlack - Frame LeftBlack - Frame RightBlack - Frame TopBlack - Frame |
SmallTouchscreen
SmallTouchScreen คือแฟร์ม Frame ที่มีปุ่มที่แสดงระหว่างหน้าจอสัมผัสเล็ก SmallTouchscreen มีลูกหลานดังต่อไปนี้:
- AimButton (ImageButton)
- FireButton (ImageButton)
สร้างตัวบ่งชี้ทิศทาง
ตัวบ่งชี้ทิศทางใช้เพื่อแสดงทิศทางของสิ่งต่าง ๆ รอบ ๆ ทฤษฎีเล็งของผู้เล่น ตัวอย่างเช่น หากมีคนยิงคุณ นักกีฬาอาจปรากฏรอบตัวคุณในทิศทางที่การยิงมาจาก นอกจากนี้ยังมีตัวอย่างอื่น ๆ เพื่อแสดงทิศทางของการก้าวเดิน เสียงของปืนระยะทาง หรือแม้กระทั่งวัตถุด้านสิ่งแวดล้อมเช่นกล่องเก็บของ
ในการสร้างตัวบ่งชี้ใหม่ ให้เพิ่มชั้น Indicator Frame ใน WeaponsSystemGui/ScalingElements/DirectionalIndicators โดยมีโครงสร้างดังนี้:
| ชื่อ | ประเภทตัวอย่าง | คำอธิบาย |
|---|---|---|
| [UIAspectRationConstraint] | UIAspectRatioConstraint | |
| [ImageLabel] | ImageLabel | ภาพของตัวบ่งชี้ทิศทาง ปรับหมุนภาพใน Studio อาจเป็นสิ่งจำเป็น เว้นแต่คุณจะอัปโหลดภาพที่หันไปด้านล่าง และมีพื้นที่ว่างน้อยหรือไม่มีเลยรอบ ๆ ฉลากภาพควรมี UIAspectRatioConstraint ของตัวเอง |
| [Configuration] | Configuration | มีคุณสมบัติเสริมเพื่อปรับแต่ง ดูที่ การกำหนดค่าตัวบ่งชี้ สำหรับข้อมูลเพิ่มเติม |
เมื่อสร้างเสร็จแล้ว คุณสามารถเปิดตัวบ่งชี้ผ่านคำสั่งดังต่อไปนี้ภายใน WeaponsSystem/Libraries/WeaponsGui ที่ indicatorName เป็นชื่อเส้นของตัวบ่งชี้ที่เปิดใช้งานและ worldPos เป็นตำแหน่งในโลกที่ตัวบ่งชี้ทิศทางควรชี้:
self.DirectionalIndicatorGuiManager:ActivateDirectionalIndicator(indicatorName, worldPos)
การกำหนดค่าตัวบ่งชี้
ตัวบ่งชี้ทิศทางสามารถปรับแต่งเพิ่มเติมได้โดยการปรับการตั้งค่าในวัตถุ Configuration ที่เป็นลูกหลานอยู่ใต้ [Indicator] การตั้งค่าเหล่านี้ทั้งหมดมีค่าตั้งต้น ซึ่งไม่จำเป็นต้องกำหนดเมื่อไม่ได้แก้ไขการตั้งค่า
การตั้งค่าดังต่อไปนี้สามารถตั้งค่าได้:
| ชื่อ | ประเภทตัวอย่าง | คำอธิบาย |
|---|---|---|
| DistanceLevelFromCenter | NumberValue | จำนวนระดับจากจุดศูนย์กลางของหน้าจอ (แต่ละระดับตั้งอยู่ประมาณ 0.03 เท่าของขนาดหน้าจอ); ค่าเริ่มต้นคือ 6 |
| FadeTime | NumberValue | เวลาเลือนซึ่งตามการเปิดใช้งานตัวบ่งชี้และเวลาที่ TimeBeforeFade; ค่าเริ่มต้นคือ 1. |
| Name | StringValue | ชื่อของตัวบ่งชี้ทิศทางตามที่คุณต้องการอ้างอิงในโค้ด; ค่าเริ่มต้นคือชื่อของ Frame ชั้นบนสุดของตัวบ่งชี้ |
| TimeBeforeFade | NumberValue | จำนวนวินาทีที่ตัวบ่งชี้จะแสดงก่อนที่จะเลือน; ค่าเริ่มต้นคือ 1 |
| TransparencyBeforeFade | NumberValue | ความโปร่งแสงของตัวบ่งชี้ก่อนที่จะเริ่มเลือน; ค่าเริ่มต้นคือ 0 |
| WidthLevel | NumberValue | จำนวนระดับความกว้างจากศูนย์กลาง (แต่ละระดับขนาดคือประมาณ 0.03 เท่าของขนาดหน้าจอ); ค่าเริ่มต้นคือค่า DistanceLevelFromCenter |
แสดงบิลบอร์ดความเสียหาย
บิลบอร์ดความเสียหายใช้เพื่อแสดงตัวเลขเล็ก ๆ บนหัวของตัวละครเมื่อได้รับความเสียหาย สิ่งเหล่านี้จะแสดงขึ้นเฉพาะสำหรับผู้เล่นที่ทำให้ความเสียหายแก่ตัวละครของผู้เล่นคนอื่น ไม่ใช่สำหรับผู้เล่นที่อยู่ในโหมดสังเกต
บิลบอร์ดความเสียหายจะถูกจัดการใน WeaponsSystem/Libraries/DamageBillboardHandler และสามารถเปิดใช้งานจากโค้ดฝั่งลูกค้าใด ๆ ได้ดังนี้ โดยที่ความเสียหายคือจำนวนความเสียหายที่จะทำ และ adornmentPart คือส่วนที่สำหรับประดับบิลบอร์ด เช่นหัวของเหยื่อ:
DamageBillboardHandler:ShowDamageBillboard(damage, adornmentPart)
กล้องบนไหล่
กล้องบนไหล่เป็นกล้องแบบบุคคลที่สามที่มองข้ามไหล่ขวาของตัวละครผู้เล่น เพื่อปรับแต่งกล้องบนไหล่ให้ปรับเปลี่ยนตัวแปรใต้ -- พารามิเตอร์การกำหนดค่า (ค่าคงที่) ในฟังก์ชัน ShoulderCamera.new() ของ WeaponsSystem/Libraries/ShoulderCamera คุณสามารถปรับแต่งสิ่งต่าง ๆ เช่นมุมมองด้านกว้าง ระยะห่างจากตัวละคร ความเร็วในการเดินในขณะ วิ่งหรือซูม เป็นต้น
การควบคุมการวิ่งและซูมตามค่าเริ่มต้น ระบบอาวุธจะเพิ่มความสามารถในการ "วิ่ง" ดังนั้นผู้เล่นสามารถวิ่งได้โดยการกดปุ่ม Shift ดันขึ้นสุดที่ thumbstick แบบไดนามิก (มือถือ) หรือดันขึ้นสุดที่จอยสติ๊กซ้าย (เกมแพด) หากคุณต้องการปิดการวิ่ง ให้ตั้งค่าค่าของ SprintEnabled ภายใน WeaponsSystem/Configuration เป็น false
ระบบยังลดความเร็วของผู้เล่นขณะเล็ง/ซูม แต่คุณสามารถปิดพฤติกรรมนี้ได้โดยการตั้งค่าค่าของ SlowZoomWalkEnabled เป็น false









