Để hỗ trợ trong việc tạo ra những trải nghiệm chiến đấu cạnh tranh, một số vũ khí được phê duyệt có sẵn để sử dụng trong bất kỳ trải nghiệm nào. Hệ thống chính có các vũ khí dựa trên projectile với camera qua vai, và việc thiết lập tốc độ projectile đủ cao có thể mô phỏng các loại vũ khí raycasting như súng laser.

Để sử dụng một vũ khí được phê duyệt trong trải nghiệm của bạn:
- Chọn một vũ khí từ dưới đây, điều hướng đến liên kết thư viện tài sản.
Trên trang mục vũ khí, nhấp vào nút Lấy màu xanh lá cây và xác nhận giao dịch.
Trong Studio, mở Toolbox.
Chọn phần Kho trong toolbox của bạn.
Tìm vũ khí và nhấp vào nó để thêm vào nơi đặt. Khi được hỏi liệu có muốn đưa công cụ vào bộ khởi động hay không, nhấp Có nếu bạn muốn người chơi bắt đầu với vũ khí trong ba lô của họ, hoặc nhấp Không để chỉ đơn giản đặt vũ khí vào thế giới 3D như một vật phẩm có thể nhặt.
Nếu đây là lần đầu tiên đưa vào một vũ khí được phê duyệt, hãy di chuyển thư mục WeaponsSystem của nó vào ServerScriptService để phục vụ như một thư mục hệ thống thống nhất cho tất cả vũ khí được phê duyệt trong trải nghiệm.

Cấu trúc thư mục hệ thống
Thư mục WeaponsSystem là một thư mục thống nhất chứa các tài sản, cấu hình và tập lệnh mà cung cấp sức mạnh cho tất cả các vũ khí được phê duyệt trong trải nghiệm. Nếu được đặt trong ServerScriptService, nó sẽ ghi đè lên bất kỳ thư mục WeaponsSystem tương đương nào có thể tồn tại trong các vũ khí cá nhân.

Thư mục WeaponsSystem chứa các phiên bản sau:
- LoạiVũKhí (Folder) – Xác định tất cả các loại vũ khí.
- ServerWeaponsScript (Script)
- Phiên bản (IntValue)
- ClientWeaponScript (LocalScript)
- NetworkingCallbacks (ModuleScript)
- WeaponData (RemoteEvent)
- WeaponsSystem (ModuleScript)
Trong thư mục WeaponsSystem, các khía cạnh khác nhau được kiểm soát bởi các ModuleScripts sau đây:
| Khía cạnh | Xử lý chủ yếu trong... |
|---|---|
| Chức năng của vũ khí |
|
| Camera trên vai |
|
| GUI vũ khí |
|
Cấu trúc vũ khí
Các vũ khí được phê duyệt là Tools và có tên như chúng sẽ xuất hiện trong ba lô của người chơi. Mỗi vũ khí được cấu trúc với một hệ thống phân cấp tương tự.
Loại vũ khí
Giá trị WeaponType StringValue tương ứng với ModuleScript cho vũ khí trong thư mục WeaponsSystem/WeaponTypes. Hai giá trị cơ bản là BulletWeapon và BowWeapon.
Mô hình vũ khí
Mỗi vũ khí chứa một Model được tạo thành từ một hoặc nhiều BaseParts để tạo thành vũ khí vật lý. Một trong số đó nên được thiết lập là PrimaryPart của mô hình.

Mô hình cũng bao gồm các thành phần quan trọng sau có thể được gán cho một trong các BaseParts của mô hình:
- TipAttachment – Attachment mà vị trí trên phần cha BasePart xác định nơi các viên đạn/projectile thoát ra.
- Các thành phần bổ sung cho bất kỳ tùy chọn đặc biệt.
Tay cầm vũ khí
Phần Handle xác định nơi mà nhân vật người chơi cầm vũ khí. Đây phải là một Part, phải được đặt tên là Handle, và phải là một phần con trực tiếp của vũ khí (công cụ).
Thư mục cấu hình
Thư mục Configuration chứa các loại "giá trị" cụ thể cho hành vi của vũ khí. Ngoài các giá trị mặc định, bạn có thể thêm các mục cấu hình bổ sung cho các tùy chọn đặc biệt khi cần.
Danh sách sau đây là các cấu hình cơ bản và giá trị mặc định của chúng:
| Mục | Mô tả | Mặc định |
|---|---|---|
| AmmoCapacity | Số lượng bắn trong mỗi "băng đạn" trước khi người chơi phải nạp lại. Lưu ý rằng đạn là không giới hạn và điều này không chỉ rõ bao nhiêu đạn mà người chơi đang mang theo. | 30 |
| FireMode | Chọn từ Semiautomatic (một phát mỗi lần nhấp/tap), Automatic (bắn liên tục), hoặc Burst (một loạt phát bắn bằng NumBurstShots mỗi lần nhấp/tap). | Semiautomatic |
| ShotCooldown | Thời gian chờ tối thiểu giữa các lần nhấp. Đối với vũ khí có FireMode là Automatic, đây cũng là thời gian giữa các phát bắn trong khi giữ nút bắn hoặc nhấp chuột. | 0.1 |
| BurstShotCooldown | Thời gian giữa mỗi phát bắn trong một loạt; chỉ có ý nghĩa nếu bạn đặt FireMode là Burst. | Giá trị của ShotCooldown |
| NumBurstShots | Số lượng phát bắn mỗi lần nhấp/loạt; chỉ có ý nghĩa nếu bạn đặt FireMode là Burst. | 3 |
| HitDamage | Số lượng sát thương mỗi lần trúng trực tiếp. | 10 |
| FullDamageDistance | Khoảng cách tối đa mà các phát bắn sẽ gây ra sát thương đầy đủ. Bất cứ thứ gì trúng phía ngoài khoảng cách này sẽ nhận được ít sát thương hơn khi khoảng cách gần đến ZeroDamageDistance. | 1000 |
| ZeroDamageDistance | Bất kỳ thứ gì trúng ngay hoặc vượt qua khoảng cách này sẽ không nhận được sát thương. | 10000 |
| BulletSpeed | Tốc độ mà các viên đạn/projectile di chuyển khi bị bắn. Đặt điều này thành giá trị cao như 20000 sẽ mô phỏng vũ khí raycasting như súng laser. | 1000 |
| MaxDistance | Khoảng cách tối đa mà các viên đạn/projectile di chuyển trước khi biến mất. | 2000 |
| MinSpread | Số lượng tối thiểu của sự rãi cho vũ khí. | 0 |
| MaxSpread | Số lượng tối đa của sự rãi cho vũ khí. | Giá trị của MinSpread |
| GravityFactor | Số lượng mà trọng lực nên ảnh hưởng đến mỗi viên đạn/projectile. Ví dụ, giá trị này cho Cung nỏ là 1 vì các mũi tên uốn cong trong quá trình bay, nhưng giá trị này cho Súng phóng tên lửa là 0 vì các tên lửa được đẩy đi thẳng. | 0 |
| HasScope | Đặt thành true nếu bạn muốn sử dụng kính ngắm được chỉ định trong Weapons System GUI. | false |
| ReloadAnimation | Tên của tập hợp hoạt hình nạp lại trong Assets/Animations của thư mục hệ thống. | RifleReload |
| AimTrack | Tên của tập hợp hoạt hình ngắm bắn trong Assets/Animations của thư mục hệ thống. | RifleAim |
| AimZoomTrack | Tên của tập hợp hoạt hình zoom trong Assets/Animations của thư mục hệ thống. | RifleAimDownSights |
| RecoilMin | Sát thương tối thiểu được thêm cho mỗi phát bắn. | 0.05 |
| RecoilMax | Sát thương tối đa được thêm cho mỗi phát bắn. | 0.5 |
| TotalRecoilMax | Tổng số sát thương tối đa cộng dồn. Sát thương hiện tại của vũ khí sẽ không bao giờ vượt quá giá trị này. | 2 |
| RecoilDecay | Hệ số suy giảm cho sát thương; về cơ bản là tỷ lệ mà sát thương giảm sau khi bắn. | 0.825 |
| RecoilDelayTime | Thời gian chờ sau khi bắn/nhấp trước khi sát thương được thêm vào camera. | 0.07 |
| StartupTime | Thời gian kéo dài sau khi trang bị vũ khí trước khi người chơi có thể bắn. Điều này ngăn chặn người chơi bắn một phát bắn đơn từ nhiều vũ khí khác nhau trong một khoảng thời gian ngắn. | 0.2 |
| FiredPlaybackSpeedRange | Số lượng mà âm thanh Fired của vũ khí có thể thay đổi về cao độ. Đặt điều này thành 0 để luôn phát với cùng một cao độ. | 0.1 |
| NumProjectiles | Số lượng viên đạn/projectile sẽ được bắn đồng thời khi bạn nhấp/tap một lần. Điều này có lợi cho các loại vũ khí như Súng bắn đạn bắn nhiều viên đạn cùng một lúc. Lưu ý rằng một phát bắn sẽ luôn sử dụng chính xác một đạn bất kể giá trị này. | 1 |
Tùy chọn chuyên biệt
Bạn có thể thêm/sửa đổi các tùy chọn sau cho bất kỳ vũ khí nào. Những tùy chỉnh này yêu cầu sửa đổi hoặc mô hình Model của vũ khí, hoặc cấu hình Configuration của vũ khí, hoặc cả hai. Một số cấu hình phụ thuộc vào các cấu hình khác, chẳng hạn như Hạt muối yêu cầu các thành viên cần thiết cho Hiệu ứng và Âm thanh Projectile/Hit.
Âm thanh và chuyển động của bolt
Bolt của vũ khí là phần di chuyển qua lại mỗi lần nó được bắn.
- Các thành viên của Mô hình vũ khí
| Bolt | BasePart di chuyển khi vũ khí được bắn. | |
| BoltMotor | Motor6D được sử dụng để hoạt hình bolt. Đảm bảo thiết lập Part0 của động cơ thành PrimaryPart của mô hình vũ khí và Part1 thành phần Bolt. | |
| BoltMotorStart | Attachment mà vị trí trên phần cha BasePart xác định nơi bolt dừng khi nó nghỉ. | |
| BoltMotorTarget | Attachment mà vị trí trên phần cha BasePart xác định nơi bolt动画 khi bắn. | |
| BoltOpenSound | Sound phát khi bolt mở. | optional |
| BoltCloseSound | Sound phát khi bolt đóng. | optional |
- Các thành viên của thư mục Cấu hình của vũ khí
| Mục | Mô tả | Mặc định |
|---|---|---|
| ActionOpenTime | Thời gian mà bolt phải hoạt hình đến vị trí mở. | 0.025 |
| ActionCloseTime | Thời gian mà bolt phải hoạt hình đến vị trí đóng. | 0.075 |
Thải ra vỏ đạn
Các vũ khí có thể bao gồm các vỏ đạn vật lý mà thải ra khi bắn và rơi xuống đất.
- Các thành viên của Mô hình vũ khí
| CasingEjectPoint | Attachment mà vị trí trên phần cha BasePart xác định nơi bạn muốn các vỏ đạn nổi lên. Lưu ý rằng định hướng của nó xác định hướng mà các vỏ đạn nổi lên. |
- Các thành viên của thư mục Cấu hình của vũ khí
| Mục | Mô tả | Mặc định |
|---|---|---|
| CasingEffect | Tên của phần vỏ BasePart trong Assets/Effects/Casings của thư mục hệ thống. | |
| CasingEjectSpeedMin | Tốc độ thải tối thiểu của các vỏ đạn | 15 |
| CasingEjectSpeedMax | Tốc độ thải tối đa của các vỏ đạn | 18 |
| CasingHitSound | Sound phát khi các vỏ đạn va chạm với mặt đất. | optional |
Hiệu ứng và âm thanh projectile/hit
Bạn có thể cấu hình các projectile vật lý cho bất kỳ vũ khí nào, cùng với Sounds, Beams, và ParticleEmitters cho hiệu ứng hit và các hiệu ứng đặc biệt khác.
- Các thành viên của thư mục Cấu hình của vũ khí
| Mục | Mô tả | Mặc định |
|---|---|---|
| ShotEffect | Tên của một hiệu ứng bắn được lưu trong Assets/Effects/Shots của thư mục hệ thống. | |
| ShouldMovePart | Đặt thành true nếu hiệu ứng ShotEffect của vũ khí nên di chuyển cùng với projectile hoặc false nếu không. Bạn chỉ nên đặt điều này thành true nếu có một đối tượng rõ ràng di chuyển với mỗi phát bắn, chẳng hạn như một mũi tên hoặc một tên lửa. | false |
| BeamFadeTime | Thời gian mà Beam0 hoặc Beam1 (xem bên dưới) nhạt màu sau khi viên đạn/projectile va chạm với một cái gì đó. Theo mặc định, không có phai thủ công nào sẽ được áp dụng bằng mã. | 0 |
| BeamWidth0 | Độ dày của Beam0 hoặc Beam1 tại Attachment0 (xem bên dưới). | 1.5 |
| BeamWidth1 | Độ dày của Beam0 hoặc Beam1 tại Attachment1 (xem bên dưới). | 1.8 |
| NumHitParticles | Số lượng hạt mà emitter HitParticles (xem bên dưới) sẽ phát ra. | 3 |
| HitParticlesUsePartColor | Đặt thành true nếu bạn muốn các hạt hit có màu sắc của bề mặt bị trúng; false nếu bạn muốn các hạt hit không thay đổi màu sắc. | true |
Các thành viên hiệu ứng bắn
Các thành viên của hiệu ứng ShotEffect được chỉ định trong phần trước
| Flying | Sound phát khi viên đạn/projectile đang di chuyển. | optional |
| Beam0 | Slot đầu tiên cho một Beam kéo dài phía sau viên đạn/projectile. Đừng quên thiết lập Attachment0 và Attachment1. | optional |
| Beam1 | Slot thứ hai cho một Beam kéo dài phía sau viên đạn/projectile. Đừng quên thiết lập Attachment0 và Attachment1. | optional |
| Attachment0 | Attachment mà vị trí trên phần cha BasePart xác định phần sau của các tia kéo dài; hãy đảm bảo thiết lập Beam.Attachment0 trên cả Beam0 và Beam1 đến đây. | optional |
| Attachment1 | Attachment mà vị trí trên phần cha BasePart xác định phần trước của các tia kéo dài; hãy đảm bảo thiết lập Beam.Attachment1 trên cả Beam0 và Beam1 đến đây. | optional |
| TrailParticles | ParticleEmitter được gán làm phần con trực tiếp của Attachment0; điều này sẽ phát ra trong khi viên đạn/projectile đang di chuyển. | optional |
| LeadingParticles | ParticleEmitter được gán làm phần con trực tiếp của Attachment1; điều này sẽ phát ra trong khi viên đạn/projectile đang di chuyển. | optional |
| HitEffect | Attachment mà vị trí sẽ được thiết lập thành Beam.Attachment1 của Beam0 khi viên đạn/projectile va chạm. Bạn phải chỉ định Beam0 và các thành viên của nó để điều này hoạt động đúng cách. | optional |
| HitSound | Sound được gán làm phần con trực tiếp của HitEffect; phát khi viên đạn/projectile va chạm. | optional |
| HitParticles | Sound được gán làm phần con trực tiếp của HitEffect; phát ra khi viên đạn/projectile va chạm. | optional |
| [ProjectilePart] | Bất kỳ Part hoặc MeshPart nào mà bạn muốn xuất hiện như một projectile vật lý. Hãy đảm bảo bạn thiết lập ShouldMovePart được đề cập trong phần trước thành true nếu bạn có một đối tượng rõ ràng ở đây. | optional |
Hạt muối
Tùy chọn này phát ra hạt từ ParticleEmitter được chỉ định tại Attachment TipAttachment của vũ khí khi nó được bắn.
Các thành viên cấu hình:

- ShotEffect (StringValue) — Tên của một hiệu ứng bắn lưu trữ trong WeaponsSystem/Assets/Effects/Shots.
Đối với hiệu ứng bắn được chỉ định, thêm một tài sản ParticleEmitter trong WeaponsSystem/Assets/Effects/Shots có tên là MuzzleParticles.

Những chớp sáng
Tùy chọn này tạo ra một hiệu ứng chớp sáng Beam khi vũ khí được bắn.
Các thành viên mô hình:

- MuzzleFlash0 (Attachment) — Được sử dụng để xác định một bên của chớp sáng. Vị trí không quan trọng.
- MuzzleFlash1 (Attachment) — Được sử dụng để xác định bên đối diện của chớp sáng. Vị trí không quan trọng.
- MuzzleFlash (Beam) — Đảm bảo thiết lập Attachment0 đến MuzzleFlash0 và Attachment1 đến MuzzleFlash1.
Các thành viên cấu hình:

- MuzzleFlashRotation0 (NumberValue) (tùy chọn) — Góc quay tối thiểu của chớp sáng; mặc định là -math.pi.
Đường dẫn hạt
Tùy chọn này tạo ra một đường dẫn có độ dài khác nhau từ vũ khí đến điểm va chạm của projectile.
Các thành viên cấu hình:

- TrailLength (NumberValue) (tùy chọn) — Độ dài của đường dẫn phía sau viên đạn/projectile; mặc định là nil có nghĩa là độ dài đường dẫn sẽ được tính bằng TrailLengthFactor.
- TrailLengthFactor (NumberValue) (tùy chọn) — Độ dài đường đi sẽ được thiết lập bằng giá trị này nhân với khoảng cách mà viên đạn/projectile đã di chuyển trong khung hình trước; mặc định là 1. Lưu ý rằng điều này sẽ bị ghi đè nếu bạn bao gồm TrailLength.
- ShowEntireTrailUntilHit (BoolValue) (tùy chọn) — Đặt thành true để render đường dẫn từ đầu vũ khí đến bất kỳ nơi nào mà projectile đang ở; điều này sẽ ghi đè cả TrailLength và TrailLengthFactor và đường dẫn chỉ biến mất khi projectile va chạm vào một thứ gì đó. Đặt thành false để sử dụng một trong hai tùy chọn trên để tính độ dài đường dẫn. Mặc định là false.
Dấu hiệu trúng
Bổ sung hình ảnh này xuất hiện trên bề mặt nơi mà các projectile va chạm và hữu ích cho các mũi tên, dấu đạn, vết bỏng, v.v.
Các thành viên cấu hình:

- HitMarkEffect (StringValue) (tùy chọn) — Tên của hiệu ứng dấu hiệu trúng lưu trong WeaponsSystem/Assets/Effects/HitMarks; mặc định là BulletHole.
- AlignHitMarkToNormal (BoolValue) (tùy chọn) — Đặt thành true nếu dấu hiệu trúng nên luôn căn chỉnh phẳng với bề mặt giống như dấu đạn, hoặc false nếu dấu hiệu trúng nên xuất hiện cắm vào bề mặt từ hướng mà projectile đã đến (như một mũi tên). Mặc định là true.
Bạn có thể thêm tài sản tùy chọn sau trong WeaponsSystem/Assets/Effects/HitMarks:

- Glow (Decal) (tùy chọn) — Xuất hiện trên bề mặt trúng ánh sáng hoàn toàn, sau đó nhanh chóng trở nên mờ dần, giống như một hiệu ứng sáng trên bề mặt mờ dần. Hữu ích cho những thứ như cho thấy một dấu hiệu màu đỏ sáng nơi mà các chất nổ va chạm.
- BulletHole (Decal) (tùy chọn) — Xuất hiện trên bề mặt trúng hoàn toàn, sau đó, sau 4 giây, sẽ mờ dần đến không nhìn thấy trong 1 giây.
- ImpactBillboard (BillboardGui) (tùy chọn) — Hiển thị trên bề mặt va chạm, luôn đối diện với camera.
- Impact (ImageLabel) (tùy chọn) — Phần con trực tiếp của ImpactBillboard; này bắt đầu hoàn toàn, phát triển đến kích thước đầy đủ của ImpactBillboard trong 0.1 giây, sau đó thu nhỏ lại một nửa kích thước của nó và mờ dần đến hoàn toàn trong suốt trong 0.1 giây.
- Bất kỳ Part/MeshPart/SpecialMesh nào mà bạn muốn xuất hiện như một projectile vật lý (tùy chọn). Ví dụ, bao gồm một MeshPart mũi tên và thiết lập AlignHitMarkToNormal được đề cập ở trên thành false sẽ khiến mũi tên nhô ra khỏi bề mặt từ hướng bạn đã bắn.
Projectile nổ
Các projectile có thể bao gồm một đối tượng Nổ để gây sát thương cho nhân vật người chơi trong khu vực xung quanh điểm va chạm.
Các thành viên cấu hình:

- ExplodeOnImpact (BoolValue) (tùy chọn) — Đặt thành true nếu bạn muốn viên đạn/projectile cho vũ khí nổ khi va chạm, false nếu không. Mặc định là false.
- BlastDamage (NumberValue) (tùy chọn) — Sát thương gây ra cho những thứ ở giữa vụ nổ. Lưu ý rằng vụ nổ sẽ gây ít sát thương hơn nếu các vật bị va chạm xa hơn khỏi tâm vụ nổ. Mặc định là 100.
Vũ khí nạp
Một vũ khí nạp như Súng ray phải được nạp giữa các phát bắn trước khi có thể bắn lại.
Các thành viên mô hình:

- Charging (Sound) (tùy chọn) — Phát khi vũ khí đang nạp.
- Discharging (Sound) (tùy chọn) — Phát khi vũ khí đang xả, ví dụ nếu bạn nạp vũ khí chỉ một phần và thả nút bắn.
- ChargeComplete (Sound) (tùy chọn) — Phát khi vũ khí đã đạt đến mức nạp đầy.
- DischargeComplete (Sound) (tùy chọn) — Phát khi vũ khí đã hoàn toàn xả.
- ChargeGlow (BasePart) (tùy chọn) — Đối tượng này sẽ trở nên ít trong suốt khi vũ khí nạp lên, do đó nó sẽ hoàn toàn không trong suốt khi đạt 100% nạp.
- ChargeCompleteParticles (ParticleEmitter) (tùy chọn) — Phát ra khi vũ khí hoàn tất việc nạp. Emitter này có thể là phần con của bất kỳ phần duy nhất nào của mô hình BasePart hoặc là phần con của một Attachment trong BasePart.
- DischargeCompleteParticles (ParticleEmitter) (tùy chọn) — Phát ra khi vũ khí đã hoàn toàn xả. Emitter này có thể là phần con của bất kỳ phần duy nhất nào của mô hình BasePart hoặc là phần con của một Attachment trong BasePart.
- ChargingParticles (ParticleEmitter) (tùy chọn) — Phát ra khi vũ khí đang nạp. Bạn có thể bao gồm nhiều emitter có tên này và mỗi cái sẽ phát ra khi đang nạp. Emitter này có thể là phần con của bất kỳ phần duy nhất nào của mô hình BasePart hoặc là phần con của một Attachment trong BasePart.
Các thành viên cấu hình:

- ChargeRate (NumberValue) — Tốc độ mà vũ khí sẽ nạp. Giá trị này phải được chỉ định để chỉ ra rằng vũ khí đang sử dụng nạp.
- DischargeRate (NumberValue) (tùy chọn) — Tốc độ mà vũ khí sẽ xả; mặc định là 0 có nghĩa là vũ khí sẽ không xả chút nào.
- ChargePassively (BoolValue) (tùy chọn) — Đặt thành true nếu bạn muốn vũ khí tự động nạp để có thể bắn ngay lập tức khi bạn nhấp, hoặc false nếu bạn muốn nhấp/chạm để nạp vũ khí và bắn khi đã đến mức nạp đầy. Mặc định là false.
- ChargingParticlesRatePerCharge (IntValue) (tùy chọn) — Số lượng hạt sẽ phát ra từ tất cả các emitter ChargingParticles nhân với mức nạp hiện tại của vũ khí. Mặc định là 20, có nghĩa là nếu mức nạp của vũ khí là 10%, mỗi emitter ChargingParticles sẽ phát ra 2 hạt (20×0.1), và nếu mức nạp của vũ khí là 90%, mỗi emitter sẽ phát ra 18 hạt (20×0.9).
- FireDischarge (NumberValue) (tùy chọn) — Số lượng nạp mà vũ khí sẽ mất sau khi bắn một phát bắn đã nạp đầy; mặc định là 1.
- NumChargeCompleteParticles (IntValue) (tùy chọn) — Số lượng hạt mà emitter - ChargeCompleteParticles sẽ phát ra khi vũ khí đã hoàn toàn nạp. Mặc định là 25.
- NumDischargeCompleteParticles (IntValue) (tùy chọn) — Số lượng hạt mà emitter - DischargeCompleteParticles sẽ phát ra khi vũ khí đã hoàn toàn xả. Mặc định là 25.
Vũ khí cung
Một vũ khí cung như Cung nỏ có thể bao gồm một dây cung và cấu trúc cánh tay thực tế, cũng như một mũi tên trực quan được gắn vào dây cung.
Ngoài việc thêm các thành viên mô hình, bạn cần áp dụng các điều sau:
- Biến vũ khí thành một vũ khí nạp. Ví dụ, thêm yêu cầu ChargeRate trong cấu hình của vũ khí chỉ định tốc độ mà dây cung được kéo. Ngoài ra, hãy xem xét việc thêm các thành viên tùy chọn vào mô hình của vũ khí như âm thanh Charging cho dây cung/cánh tay bị kéo lại.
Các thành viên mô hình:

- LeftString (Beam) (tùy chọn) — Phần bên trái của dây cung.
- RightString (Beam) (tùy chọn) — Phần bên phải của dây cung.
- Arrow (BasePart) (tùy chọn) — Mũi tên xuất hiện khi dây cung đã được kéo hoàn toàn. Lưu ý rằng điều này chỉ dành cho bề ngoài trên cung (mũi tên thực tế sẽ là một ShotEffect như đã nêu trong Hiệu ứng/Hạt va chạm và Âm thanh).
- String1 (Attachment) (tùy chọn) — Điểm trung tâm của dây cung.
- Arms (Part) (tùy chọn) — Một phần chỉ đóng vai trò như một chỉ báo bên trong rằng cánh tay cung sẽ được hoạt hình. Điều này có thể chứa các phần con trực tiếp sau:
- LeftString0 (Attachment) (tùy chọn) — Điểm mà phía bên trái của dây cung được gắn vào cung.
- RightString0 (Attachment) (tùy chọn) — Điểm mà phía bên phải của dây cung được gắn vào cung.
- [SpecialMesh] (SpecialMesh) (tùy chọn) — Phần của cung thực sự sẽ uốn cong khi dây cung được kéo. Lưu ý rằng bạn phải chỉ định bốn đối tượng Vector3Value sau đây để làm cho nó hoạt hình.
- TightOffset (Vector3Value) (tùy chọn) — Độ dịch chuyển của SpecialMesh khi cung đã được kéo hoàn toàn.
GUI hệ thống vũ khí
Hệ thống chính của vũ khí giao tiếp với hệ thống này để cập nhật GUI dựa trên những thứ như độ mở của súng, chỉ báo khi bạn bị trúng hoặc bắn trúng người khác, v.v.
WeaponsSystemGui là một đối tượng ScreenGui trong WeaponsSystem/Assets được gán cho PlayerGui khi trải nghiệm bắt đầu. WeaponSystemGui có 4 thành viên:
- ScalingElements - Một Folder của các thành phần trên màn hình.
- LargeTouchscreen - Một Frame cho các nút trên màn hình cảm ứng lớn.
- SmallTouchscreen - Một Frame cho các nút trên màn hình cảm ứng nhỏ.
Các thành phần thích hợp
ScalingElements là một Folder được gán dưới WeaponsSystemGui với các thành viên sau:
| Tên | Loại phiên bản | Mô tả |
|---|---|---|
| DirectionalIndicators | Folder | Một Folder nơi tất cả chỉ báo hướng được lưu. |
| Crosshair | Frame | Một Frame chứa các đối tượng sau: [UIAspectRationConstraint] - UIAspectRatioConstraint Bottom - ImageLabel Left - ImageLabel Right - ImageLabel Top - ImageLabel |
| HitMarker | Frame | Một Frame chứa các đối tượng sau: [UIAspectRatioConstraint] - UIAspectRatioConstraint HitMarkerImage - ImageLabel xuất hiện và mờ dần khi người chơi bắn trúng một nhân vật người chơi khác. |
LargeTouchscreen
LargeTouchscreen là một Frame chứa các nút hiển thị trên màn hình cảm ứng lớn. LargeTouchscreen có các thành viên sau:
- AimButton (ImageButton)
- FireButton (ImageButton)
Kính ngắm
Scope là một Frame chứa ScopeImage (ImageLabel) xuất hiện khi zoom vào một vũ khí với HasScope được bật (xem Cấu trúc Vũ Khí).
Scope có các thành viên sau:
| Tên | Loại phiên bản | Mô tả |
|---|---|---|
| ScopeInstance | Frame | Một Frame chứa các tài sản sau đây được sử dụng khi zoom vào một vũ khí với HasScope được bật: [UIAspectRationConstraint] - UIAspectRatioConstraint BottomBlack - Frame LeftBlack - Frame RightBlack - Frame TopBlack - Frame |
SmallTouchscreen
SmallTouchScreen là một Frame chứa các nút hiển thị trên màn hình cảm ứng nhỏ. SmallTouchscreen có các thành viên sau:
- AimButton (ImageButton)
- FireButton (ImageButton)
Tạo một chỉ báo hướng
Các chỉ báo hướng được sử dụng để thể hiện hướng của một cái gì đó xung quanh tâm ngắm của người chơi. Ví dụ, nếu một ai đó bắn bạn, có thể xuất hiện một hình bán nguyệt đỏ xung quanh tâm ngắm của bạn ở hướng mà phát bắn đến. Các ví dụ khác bao gồm các chỉ báo để chỉ hướng của tiếng bước chân, tiếng súng gián tiếp, hoặc thậm chí các đối tượng môi trường như rương.
Để tạo một chỉ báo mới, thêm một Frame chỉ báo mới trong WeaponsSystemGui/ScalingElements/DirectionalIndicators với cấu trúc sau:
| Tên | Loại phiên bản | Mô tả |
|---|---|---|
| [UIAspectRationConstraint] | UIAspectRatioConstraint | |
| [ImageLabel] | ImageLabel | Hình ảnh của chỉ báo hướng. Bạn có thể cần điều chỉnh độ xoay của hình ảnh trong Studio trừ khi bạn tải hình ảnh đó với hướng xuống và có ít hoặc không có khoảng trắng xung quanh. Nhãn hình ảnh này cũng phải chứa một UIAspectRatioConstraint của riêng nó. |
| [Configuration] | Configuration | Chứa các thuộc tính tùy chọn để điều chỉnh. Xem Cấu hình Chỉ báo để biết thêm thông tin. |
Khi đã tạo, bạn có thể kích hoạt một chỉ báo thông qua lệnh sau bên trong WeaponsSystem/Libraries/WeaponsGui nơi indicatorName là tên chuỗi của chỉ báo để kích hoạt và worldPos là vị trí thế giới mà chỉ báo hướng nên chỉ đến:
self.DirectionalIndicatorGuiManager:ActivateDirectionalIndicator(indicatorName, worldPos)
Cấu hình chỉ báo
Các DirectionalIndicators có thể được sửa đổi thêm bằng cách điều chỉnh đối tượng Configuration được gán dưới [Indicator]. Tất cả những cài đặt này đều có giá trị mặc định, vì vậy không cần phải thiết lập cấu hình khi không sửa đổi một cài đặt nào.
Các cấu hình sau có thể được thiết lập:
| Tên | Loại phiên bản | Mô tả |
|---|---|---|
| DistanceLevelFromCenter | NumberValue | Số lượng cấp độ khoảng cách từ trung tâm màn hình (mỗi cấp độ khoảng cách khoảng 0.03 tỉ lệ màn hình); mặc định là 6. |
| FadeTime | NumberValue | Thời gian mờ của chỉ báo sau khi kích hoạt và thời gian TimeBeforeFade; mặc định là 1. |
| Name | StringValue | Tên của chỉ báo hướng như bạn muốn tham chiếu trong mã; mặc định là tên của Frame cấp cao nhất của chỉ báo. |
| TimeBeforeFade | NumberValue | Số giây mà chỉ báo sẽ xuất hiện trước khi mờ dần; mặc định là 1. |
| TransparencyBeforeFade | NumberValue | Độ trong suốt của chỉ báo trước khi nó bắt đầu mờ; mặc định là 0. |
| WidthLevel | NumberValue | Số lượng cấp độ chiều rộng từ trung tâm (mỗi cấp độ chiều rộng khoảng 0.03 tỉ lệ màn hình); mặc định là giá trị của DistanceLevelFromCenter. |
Hiển thị bảng thông báo thiệt hại
Bảng thông báo thiệt hại được sử dụng để hiển thị những con số nhỏ trên đầu một nhân vật khi họ bị thiệt hại. Những điều này chỉ hiển thị cho người chơi đã gây thiệt hại cho nhân vật người chơi khác, không dành cho những người đang quan sát.
Các bảng thông báo thiệt hại được xử lý trong WeaponsSystem/Libraries/DamageBillboardHandler và có thể được kích hoạt từ bất kỳ mã phía khách nào như sau, nơi thiệt hại là số lượng thiệt hại đã gây ra và adornmentPart là phần mà bảng thông báo sẽ xuất hiện, như đầu của nạn nhân:
DamageBillboardHandler:ShowDamageBillboard(damage, adornmentPart)
Camera trên vai
Camera trên vai là một camera góc nhìn thứ ba nhìn qua vai phải của nhân vật người chơi. Để tùy chỉnh camera trên vai, hãy sửa đổi các biến dưới phần -- Các tham số cấu hình (hằng số) trong hàm ShoulderCamera.new() của WeaponsSystem/Libraries/ShoulderCamera. Bạn có thể thay đổi các thứ như tỷ lệ nhìn, cách xa nhân vật, tốc độ đi bộ trong khi chạy hoặc zoom, v.v.
Kiểm soát chạy và zoom
Theo mặc định, hệ thống vũ khí thêm khả năng "chạy", để người chơi có thể chạy bằng cách giữ phím Shift, đẩy hoàn toàn lên trên điều khiển ngón tay động (di động), hoặc đẩy hoàn toàn lên trên cần điều khiển bên trái (gamepad). Nếu bạn muốn vô hiệu hóa việc chạy, hãy đặt giá trị của SprintEnabled trong WeaponsSystem/Configuration thành false.
Hệ thống cũng giảm tốc độ của người chơi trong khi họ đang nhắm/zoom, nhưng bạn có thể vô hiệu hóa hành vi này bằng cách đặt giá trị của SlowZoomWalkEnabled thành false.









