Aby pomóc w tworzeniu konkurencyjnych doświadczeń opartych na walce, dostępnych jest kilka wspieranych broni, które można wykorzystać w każdym doświadczeniu. Podstawowy system zawiera broń opartą na projektile z kamerą z perspektywy naramiennej, a ustawienie prędkości pocisku na wystarczająco wysoki poziom może symulować broń z raycastingiem, taką jak pistolety laserowe.

Aby użyć wspieranej broni w swoim doświadczeniu:
- Wybierz broń z poniższej listy, przechodząc do linku biblioteki zasobów.
Na stronie przedmiotu broni kliknij zielony przycisk Get i potwierdź transakcję.
W Studio otwórz Toolbox.
Wybierz sekcję Inventory swojego toolboxa.
Zlokalizuj broń i kliknij ją, aby dodać ją do miejsca. Kiedy zostaniesz zapytany, czy umieścić narzędzie w starter pack, kliknij Tak, jeśli chcesz, aby gracze zaczynali z bronią w swoim plecaku, lub kliknij Nie, aby po prostu umieścić broń w 3D jako pickup.
Jeśli to jest pierwszy raz, kiedy wprowadzasz wspieraną broń, przenieś jej folder WeaponsSystem do ServerScriptService, aby działał jako zunifikowany folder systemowy dla wszystkich wspieranych broni w doświadczeniu.

Struktura folderów systemu
Folder WeaponsSystem to zunifikowany folder, który zawiera zasoby, konfiguracje i skrypty, które napędzają wszystkie wspierane bronie w doświadczeniu. Jeśli znajduje się w ServerScriptService, nadpisuje wszelkie równorzędne foldery WeaponsSystem, które mogą znajdować się w poszczególnych broń.

Folder WeaponsSystem zawiera następujące instancje:
- WeaponTypes (Folder) – Określa wszystkie typy broni.
- ServerWeaponsScript (Script)
- Version (IntValue)
- ClientWeaponScript (LocalScript)
- NetworkingCallbacks (ModuleScript)
- WeaponData (RemoteEvent)
- WeaponsSystem (ModuleScript)
W folderze WeaponsSystem różne aspekty są kontrolowane przez następujące ModuleScripts:
| Aspect | Handled primarily within... |
|---|---|
| Funkcjonalność broni |
|
| Kamera ramienna |
|
| GUI broni |
|
Struktura broni
Wspierane bronie to Tools i są nazwane tak, jak będą się pojawiać w plecaku gracza. Każda broń jest zorganizowana w podobnej hierarchii.
Typ broni
Typ WeaponType StringValue odpowiada ModuleScript dla broni w folderze WeaponsSystem/WeaponTypes. Dwie podstawowe wartości to BulletWeapon i BowWeapon.
Model broni
Każda broń zawiera Model, składający się z jednego lub więcej BaseParts, aby utworzyć fizyczną broń. Jedna z tych części powinna być ustawiona jako PrimaryPart modelu.

Model zawiera także następujące ważne potomne, które mogą być umieszczone w jednym z BaseParts modelu:
- TipAttachment – Attachment, którego pozycja na rodzicu BasePart określa, gdzie wychodzą kule/projekty.
- HandleAttachment – Attachment, którego pozycja na rodzicu BasePart określa, gdzie jest spawna Handle.
- Dodatkowe potomne dla wszelkich specjalizowanych opcji.
Uchwyt broni
Część Handle określa, gdzie postać gracza trzyma broń. Musi to być Part, musi mieć nazwę Handle i musi być bezpośrednim dzieckiem broni (narzędzia).
Folder konfiguracji
Folder Configuration zawiera specyficzne typy "wartości" dla zachowania broni. Oprócz wartości domyślnych można dodać dodatkowe elementy konfiguracji dla specjalizowanych opcji, gdy jest to stosowne.
Poniżej znajdują się podstawowe konfiguracje i ich domyślne wartości:
| Element | Opis | Domyślny |
|---|---|---|
| AmmoCapacity | Liczba strzałów w każdym "kartridżu" przed przeładowaniem. Zauważ, że amunicja jest nieograniczona i to nie określa, ile amunicji postać gracza nosi. | 30 |
| FireMode | Wybierz spośród Semiautomatyczna (jeden strzał na kliknięcie/tapnięcie), Automatyczna (ciągły ogień) lub Wystrzał (bursta strzałów równą NumBurstShots przy każdym kliknięciu/tapnięciu). | Semiautomatyczna |
| ShotCooldown | Minimalny czas oczekiwania między kliknięciami. Dla broni z FireMode ustawionym na Automatyczną, to również czas między strzałami podczas przytrzymywania przycisku ognia lub kliknięcia. | 0.1 |
| BurstShotCooldown | Czas między każdym strzałem w burście; ma znaczenie tylko, jeśli ustawisz FireMode na Burst. | Wartość ShotCooldown |
| NumBurstShots | Liczba strzałów na kliknięcie/burst; ma znaczenie tylko, jeśli ustawisz FireMode na Burst. | 3 |
| HitDamage | Ilość obrażeń zadawanych przy każdym bezpośrednim trafieniu. | 10 |
| FullDamageDistance | Maksymalna odległość, w której strzały będą zadawać pełne obrażenia. Cokolwiek trafione poza tą odległością otrzyma coraz mniejsze obrażenia, w miarę zbliżania się do ZeroDamageDistance. | 1000 |
| ZeroDamageDistance | Wszystko trafione w tej odległości lub dalej nie otrzyma żadnych obrażeń. | 10000 |
| BulletSpeed | Prędkość, z jaką kule/projekty poruszają się, gdy są strzelane. Ustawienie tej wartości na bardzo wysoką, np. 20000, symuluje broń z raycastingiem, taką jak pistolety laserowe. | 1000 |
| MaxDistance | Maksymalna odległość, na jaką kule/projekty poruszają się przed zniknięciem. | 2000 |
| MinSpread | Minimalna ilość rozpraszenia dla broni. | 0 |
| MaxSpread | Maksymalna ilość rozpraszenia dla broni. | Wartość MinSpread |
| GravityFactor | Ilość, jaką grawitacja powinna wpływać na każdą kulę/projekt. Na przykład, ta wartość dla Łuku krzyżowego wynosi 1, ponieważ strzały zakrzywiają się w locie, ale ta wartość dla Wyrzutnia rakiet wynosi 0, ponieważ napędzane rakiety poruszają się na prost. | 0 |
| HasScope | Ustaw na true, jeśli chcesz używać lunety określonej w GUI systemu broni. | false |
| ReloadAnimation | Nazwa ścieżki animacji przeładowania w Assets/Animations w folderze systemowym. | RifleReload |
| AimTrack | Nazwa ścieżki animacji celowania w Assets/Animations w folderze systemowym. | RifleAim |
| AimZoomTrack | Nazwa ścieżki animacji powiększenia celowania w Assets/Animations w folderze systemowym. | RifleAimDownSights |
| RecoilMin | Minimalny odrzut dodawany do każdego strzału. | 0.05 |
| RecoilMax | Maksymalny odrzut dodawany do każdego strzału. | 0.5 |
| TotalRecoilMax | Całkowity maksymalny zgromadzony odrzut. Aktualny odrzut broni nigdy nie przekroczy tej wartości. | 2 |
| RecoilDecay | Mnożnik dekrecji dla odrzutu; zasadniczo wskaźnik, w jakim odrzut zmniejsza się po strzelaniu. | 0.825 |
| RecoilDelayTime | Czas oczekiwania po strzelaniu/kliknięciu przed dodaniem odrzutu do kamery. | 0.07 |
| StartupTime | Czas po wyposażeniu broni, zanim gracz będzie mógł strzelać. To zapobiega temu, aby gracze wystrzelili pojedynczy strzał z wielu różnych broni w szybkim tempie. | 0.2 |
| FiredPlaybackSpeedRange | Ilość, w jakiej tonacja może się różnić dla dźwięku Fired broni. Ustaw to na 0, aby zawsze odtwarzać go w tej samej tonacji. | 0.1 |
| NumProjectiles | Liczba kul/projektyli, które będą strzelane w tym samym czasie, gdy klikniesz/tapniesz raz. Jest to przydatne dla broni, takich jak Strzelba, które strzelają wieloma kulami w tym samym czasie. Zauważ, że jeden strzał zawsze wykorzysta dokładnie jedną amunicję, niezależnie od tej wartości. | 1 |
Opcje specjalizowane
Możesz dodać/modyfikować następujące opcje dla każdej broni. Te dostosowania wymagają modyfikacji albo Model, albo Configuration broni, albo obu. Niektóre konfiguracje zależą od innych, takich jak Cząsteczki lufy, które wymagają odpowiednich dzieci dla Efektów i dźwięków projektu/trafienia.
Animacje i dźwięki zasuwnicy
Zasuwka broni to część, która porusza się w przód i w tył za każdym razem, gdy jest wystrzelona.
- Potomstwo modelu broni Model broni
| Zasuwka | BasePart, która porusza się, gdy broń jest wystrzelona. | |
| SilnikZasuwki | Motor6D używany do animacji zasuwki. Upewnij się, że ustawisz Part0 silnika na PrimaryPart modelu broni i Part1 na część Zasuwki. | |
| SilnikZasuwkiStart | Attachment, którego pozycja na rodzicu BasePart określa, gdzie znajduje się zasuwka, gdy jest w spoczynku. | |
| SilnikZasuwkiCel | Attachment, którego pozycja na rodzicu BasePart określa, gdzie zasuwka animuje się podczas strzelania. | |
| DźwiękOtworzeniaZasuwki | Sound, który odtwarzany jest, gdy zasuwka się otwiera. | opcjonalny |
| DźwiękZamykaniaZasuwki | Sound, który odtwarzany jest, gdy zasuwka się zamyka. | opcjonalny |
- Dzieci folderu Konfiguracji broni
| Element | Opis | Domyślny |
|---|---|---|
| CzasOtwarciaAkcji | Czas, jaki zajmuje zasuwce animacja do pozycji otwartej. | 0.025 |
| CzasZamknięciaAkcji | Czas, jaki zajmuje zasuwce animacja do pozycji zamkniętej. | 0.075 |
Wyrzucanie łusek pocisków
Bronie mogą zawierać fizyczne łuski pocisków, które wyrzucają się podczas strzelania i opadają na ziemię.
- Potomstwo modelu broni Model broni
| PunktWyrzutuŁuski | Attachment, którego pozycja na rodzicu BasePart określa, gdzie chcesz, aby łuski pocisków wypadały. Zauważ, że jego orientacja określa kierunek, w którym wychodzą łuski. |
- Dzieci folderu Konfiguracji broni
| Element | Opis | Domyślny |
|---|---|---|
| EfektŁuski | Nazwa łuski BasePart w Assets/Effects/Casings w folderze systemowym. | |
| MinEjectSpeed | Minimalna prędkość wyrzucania łusek | 15 |
| MaxEjectSpeed | Maksymalna prędkość wyrzucania łusek | 18 |
| DźwiękUderzeniaŁuski | Sound, który odtwarzany jest, gdy łuski uderzają w ziemię. | opcjonalny |
Efekty/trafienia projektu i dźwięki
Możesz skonfigurować fizyczne projekty do każdej broni, wraz z Sounds, Beams i ParticleEmitters dla efektów trafienia i innych efektów specjalnych.
- Dzieci folderu Konfiguracji broni
| Element | Opis | Domyślny |
|---|---|---|
| ShotEffect | Nazwa efektu strzału przechowywanego w Assets/Effects/Shots w folderze systemowym. | |
| ShouldMovePart | Ustaw na true, jeśli efekt ShotEffect broni powinien poruszać się z pociskiem lub false, jeśli nie. Powinieneś ustawić to na true, jeśli istnieje widoczny obiekt, który porusza się z każdym strzałem, takim jak strzała lub rakieta. | false |
| BeamFadeTime | Czas, jaki zajmuje, aby Beam0 lub Beam1 (zobacz poniżej) zniknęło po tym, jak kula/projekt trafi w coś. Zasadniczo, kod nie zastosuje ręcznego zanikania. | 0 |
| BeamWidth0 | Grubość Beam0 lub Beam1 w Attachment0 (zobacz poniżej). | 1.5 |
| BeamWidth1 | Grubość Beam0 lub Beam1 w Attachment1 (zobacz poniżej). | 1.8 |
| NumHitParticles | Liczba cząsteczek, które emitter HitParticles (zobacz poniżej) wypuści. | 3 |
| HitParticlesUsePartColor | Ustaw na true, jeśli chcesz, aby cząsteczki trafienia miały kolor trafionej powierzchni; false, jeśli chcesz, aby cząsteczki trafienia nie zmieniały koloru. | true |
Potomstwo efektu strzału
Potomstwo określonego ShotEffect, o którym mowa w poprzedniej sekcji
| Latanie | Sound, który odtwarzany jest, gdy kula/projekt porusza się. | opcjonalny |
| Beam0 | Pierwszy slot dla Beam, który podąża za kulą/projektem. Nie zapomnij ustawić Attachment0 i Attachment1. | opcjonalny |
| Beam1 | Drugi slot dla Beam, który podąża za kulą/projektem. Nie zapomnij ustawić Attachment0 i Attachment1. | opcjonalny |
| Attachment0 | Attachment, którego pozycja na rodzicu BasePart określa tył podążających wiązek; upewnij się, że ustawiasz Beam.Attachment0 w Beam0 i Beam1 na to. | opcjonalny |
| Attachment1 | Attachment, którego pozycja na rodzicu BasePart określa przód podążających wiązek; upewnij się, że ustawiasz Beam.Attachment1 w Beam0 i Beam1 na to. | opcjonalny |
| TrailParticles | ParticleEmitter umieszczony jako bezpośrednie dziecko Attachment0; ta cząsteczka będzie generować podczas podróży kuli/projektu. | opcjonalny |
| LeadingParticles | ParticleEmitter umieszczony jako bezpośrednie dziecko Attachment1; ta cząstka będzie emitować podczas podróży kuli/projektu. | opcjonalny |
| HitEffect | Attachment, której pozycja zostanie ustawiona na Beam.Attachment1 z Beam0, gdy kula/projekt trafi. Musisz określić Beam0 i jego załączniki, aby to działało poprawnie. | opcjonalny |
| HitSound | Sound umieszczony jako bezpośrednie dziecko HitEffect; odtwarzany, gdy kula/projekt trafia. | opcjonalny |
| HitParticles | Sound umieszczony jako bezpośrednie dziecko HitEffect; emitowane, gdy kula/projekt trafia. | opcjonalny |
| [ProjectilePart] | Jakakolwiek Part lub MeshPart, która ma być traktowana jako fizyczny pocisk. Upewnij się, że ustawiasz ShouldMovePart, o którym mowa w poprzedniej sekcji, na true, jeśli masz widoczny obiekt tutaj. | opcjonalny |
Cząsteczki lufy
Ta opcja emituje cząsteczki z określonego ParticleEmitter przy TipAttachment Attachment, gdy broń jest wystrzelona.
Potomstwo konfiguracji:

- ShotEffect (StringValue) — Nazwa efektu strzału przechowywanego w WeaponsSystem/Assets/Effects/Shots.
- NumMuzzleParticles (IntValue) (opcjonalnie) — Liczba cząsteczek lufy, które będą emitowane; domyślnie to 50.
Dla określonego efektu strzału dodaj cząsteczki emitera w WeaponsSystem/Assets/Effects/Shots o nazwie MuzzleParticles.

Wyładowania lufy
Ta opcja tworzy efekt błysku Beam, gdy broń jest wystrzelona.
Potomstwo modelu:

- MuzzleFlash0 (Attachment) — Używane do określenia jednej strony błysku lufy. Pozycja nie ma znaczenia.
- MuzzleFlash1 (Attachment) — Używane do określenia przeciwnej strony błysku lufy. Pozycja nie ma znaczenia.
- MuzzleFlash (Beam) — Upewnij się, że ustawiasz Attachment0 na MuzzleFlash0 i Attachment1 na MuzzleFlash1.
Potomstwo konfiguracji:

- MuzzleFlashTime (NumberValue) (opcjonalnie) — Czas, przez jaki błysk lufy będzie widoczny; domyślnie to 0.03.
- MuzzleFlashRotation0 (NumberValue) (opcjonalnie) — Minimalna rotacja błysku lufy; domyślnie to -math.pi.
- MuzzleFlashRotation1 (NumberValue) (opcjonalnie) — Maksymalna rotacja błysku lufy; domyślnie to math.pi.
Cząsteczki śladu
Ta opcja tworzy ślad o zmiennej długości od broni do punktu uderzenia projektu.
Potomstwo konfiguracji:

- TrailLength (NumberValue) (opcjonalnie) — Długość śladu pozostającego za kulą/projektem; domyślnie to nil, co oznacza, że długość śladu zostanie określona przy użyciu TrailLengthFactor.
- TrailLengthFactor (NumberValue) (opcjonalnie) — Długość śladu zostanie ustawiona na tę wartość pomnożoną przez odległość, jaką kula/projekt przebył w ostatniej klatce; domyślnie to 1. Zauważ, że to zostanie nadpisane, jeśli uwzględnisz TrailLength.
- ShowEntireTrailUntilHit (BoolValue) (opcjonalnie) — Ustaw na true, aby renderować ślad od końcówki broni aż do miejsca, gdzie projekt trafia; to nadpisze zarówno TrailLength, jak i TrailLengthFactor, a ślad zniknie dopiero, gdy pocisk trafi w coś. Ustaw na false, aby użyć jednej z powyższych dwóch opcji do obliczenia długości śladu. Domyślnie to false.
Ślady trafień
To wizualne dodatki pojawiają się na powierzchni, w którą uderzają projekty i są przydatne dla strzał, dziur kulowych, śladów podeszwy, itd.
Potomstwo konfiguracji:

- HitMarkEffect (StringValue) (opcjonalnie) — Nazwa efektu trafienia przechowywanego w WeaponsSystem/Assets/Effects/HitMarks; domyślnie to BulletHole.
- AlignHitMarkToNormal (BoolValue) (opcjonalnie) — Ustaw na true, jeśli ślad trafienia zawsze powinien być płasko ustawiony na powierzchnię, jak dziura kulowa, lub false, jeśli ślad trafienia powinien być widoczny wbity w powierzchnię od kierunku, z którego pocisk przyleciał (jak strzała). Domyślnie to true.
Możesz dodać następujący opcjonalny zasób w WeaponsSystem/Assets/Effects/HitMarks:

- Glow (Decal) (opcjonalnie) — Pojawia się na trafionej powierzchni w pełni nieprzeźroczysta, a następnie szybko staje się coraz bardziej przezroczysta, jak efekt świecenia na powierzchni, który szybko znika. Przydatne do pokazania np. świecącego czerwonego śladu, gdzie uderzyły eksplozje.
- BulletHole (Decal) (opcjonalnie) — Pojawia się na trafionej powierzchni w pełni nieprzeźroczysta i po 4 sekundach staje się przezroczysta w ciągu 1 sekundy.
- ImpactBillboard (BillboardGui) (opcjonalnie) — Wyświetla się na trafionej powierzchni, zawsze zwrócone w stronę kamery.
- Impact (ImageLabel) (opcjonalnie) — Bezpośrednie dziecko ImpactBillboard; zaczyna w pełni nieprzeźroczysta, rośnie do pełnego rozmiaru ImpactBillboard w ciągu 0.1 sekundy, a następnie maleje do połowy swojego rozmiaru i znika w pełną przezroczystość w ciągu 0.1 sekundy.
- Jakakolwiek Part/MeshPart/SpecialMesh, która ma się pojawiać jako fizyczny pocisk (opcjonalnie). Na przykład, uwzględnienie strzały MeshPart i ustawienie AlignHitMarkToNormal z poprzedniej sekcji na false spowoduje, że strzała wbije się w powierzchnię od strony, z której została wystrzelona.
Eksplodujące projekty
Projekty mogą zawierać obiekt eksplozji, aby zadawać obrażenia postaci graczy w obszarze wokół punktu uderzenia.
Potomstwo konfiguracji:

- ExplodeOnImpact (BoolValue) (opcjonalnie) — Ustaw na true, jeśli chcesz, aby kule/projekty broni eksplodowały po trafieniu, false w przeciwnym razie. Domyślnie to false.
- BlastDamage (NumberValue) (opcjonalnie) — Obrażenia zadawane przedmiotom w centrum eksplozji. Zauważ, że eksplozja zadaje mniejsze obrażenia im dalej znajdują się trafione obiekty od centrum eksplozji. Domyślnie to 100.
Broń łucznicza
Broń łucznicza, jak Krzyżowy łuk, może zawierać realistyczną konstrukcję struny i ramion, a także widoczną strzałę umocowaną do struny.
Oprócz dodania potomków modelu, musisz również zastosować następujące:
- Uczyń broń ładowaną. Na przykład, dodaj wymaganą ChargeRate w Configuration broni, która określa, jak szybko struna jest naciągana. Dodatkowo, rozważ dodanie opcjonalnych potomków do modelu broni, takich jak dźwięk Charging dla struny/ramion naciąganych.
Potomstwo modelu:

- LeftString (Beam) (opcjonalnie) — Wizualna lewa połowa struny.
- RightString (Beam) (opcjonalnie) — Wizualna prawa połowa struny.
- Arrow (BasePart) (opcjonalnie) — Strzała, która pojawia się, gdy łuk jest w pełni naciągnięty. Zauważ, że to jest tylko wizualny aspekt na łuku (faktycznie wystrzelona strzała będzie być efektem ShotEffect, jak opisano w Efekty/trafienia projektu i dźwięki).
- String1 (Attachment) (opcjonalnie) — Punkt centralny struny.
- StringLoose (Attachment) (opcjonalnie) — Punkt, w którym String1 powinno znajdować się, gdy łuk jest w spoczynku.
- StringTight (Attachment) (opcjonalnie) — Punkt, w którym String1 powinno znajdować się, gdy łuk jest w pełni naciągnięty.
- Arms (Part) (opcjonalnie) — Część, która pełni funkcję wewnętrznego wskaźnika, że ramiona łuku będą animowane. Może zawierać następujące bezpośrednie dzieci:
- LeftString0 (Attachment) (opcjonalnie) — Punkt, w którym lewa strona struny jest przymocowana do łuku.
- RightString0 (Attachment) (opcjonalnie) — Punkt, w którym prawa strona struny jest przymocowana do łuku.
- LeftLoose (Attachment) (opcjonalnie) — Punkt, w którym LeftString0 powinno znajdować się, gdy łuk jest w spoczynku.
- RightLoose (Attachment) (opcjonalnie) — Punkt, w którym RightString0 powinno znajdować się, gdy łuk jest w spoczynku.
- LeftTight (Attachment) (opcjonalnie) — Punkt, w którym LeftString0 powinno znajdować się, gdy łuk jest w pełni naciągnięty.
- RightTight (Attachment) (opcjonalnie) — Punkt, w którym RightString0 powinno znajdować się, gdy łuk jest w pełni naciągnięty.
- [SpecialMesh] (SpecialMesh) (opcjonalnie) — Część łuku, która faktycznie będzie się wyginać, gdy łuk jest naciągnięty. Należy pamiętać, że musisz określić następujące cztery obiekty Vector3Value, aby to animować.
- TightOffset (Vector3Value) (opcjonalnie) — Przesunięcie SpecialMesh, gdy łuk jest w pełni naciągnięty.
GUI systemu broni
Podstawowy system broni współdziała z tym systemem, aby zaktualizować GUI na podstawie takich rzeczy jak rozproszenie broni, wskaźniki na to, kiedy zostałeś trafiony lub trafisz innych itp.
WeaponsSystemGui to obiekt ScreenGui w WeaponsSystem/Assets, który jest przymocowany do PlayerGui, gdy doświadczenie się zaczyna. WeaponSystemGui ma 4 potomków:
- ScalingElements - Folder Folder ekranowych elementów.
- LargeTouchscreen - Frame Frame dla przycisków na dużych ekranach dotykowych.
- SmallTouchscreen - Frame Frame dla przycisków na małych ekranach dotykowych.
Elementy skalowania
ScalingElements to Folder, będący potomkiem WeaponsSystemGui z następującymi potomkami:
| Nazwa | Typ instancji | Opis |
|---|---|---|
| DirectionalIndicators | Folder | Folder Folder, w którym przechowywane są wszystkie wskaźniki kierunkowe. |
| Crosshair | Frame | Frame Frame, zawierający następujące obiekty: [UIAspectRationConstraint] - UIAspectRatioConstraint Bottom - ImageLabel Left - ImageLabel Right - ImageLabel Top - ImageLabel |
| HitMarker | Frame | Frame Frame, zawierający następujące obiekty: [UIAspectRatioConstraint] - UIAspectRatioConstraint HitMarkerImage - ImageLabel, które pojawia się i znika, gdy gracz skutecznie trafia inną postać gracza. |
LargeTouchscreen
LargeTouchscreen to Frame, zawierający przyciski, które wyświetlają się na dużych ekranach dotykowych. LargeTouchscreen ma następujące potomki:
- AimButton (ImageButton)
- FireButton (ImageButton)
Scope
Scope to Frame, który zawiera ScopeImage (ImageLabel), które pojawia się podczas powiększania broni z włączoną opcją HasScope (zobacz Strukturę broni).
Scope ma następujące potomstwo:
| Nazwa | Typ instancji | Opis |
|---|---|---|
| ScopeInstance | Frame | Frame Frame, zawierający następujące zasoby używane podczas powiększania broni z włączoną opcją HasScope: [UIAspectRationConstraint] - UIAspectRatioConstraint BottomBlack - Frame LeftBlack - Frame RightBlack - Frame TopBlack - Frame |
SmallTouchscreen
SmallTouchScreen to Frame, zawierający przyciski, które wyświetlają się na małych ekranach dotykowych. SmallTouchscreen ma następujące potomki:
- AimButton (ImageButton)
- FireButton (ImageButton)
Tworzenie wskaźnika kierunkowego
Wskaźniki kierunkowe są używane do pokazywania kierunku czegoś wokół celownika gracza. Na przykład, jeśli ktoś Cię postrzeli, półokrągły czerwony wskaźnik może pojawić się wokół celownika w kierunku, z którego padł strzał. Inne przykłady to wskaźniki pokazujące kierunkowe kroków, pośrednie ognie z broni lub nawet obiektów środowiskowych, takich jak skrzynki.
Aby stworzyć nowy wskaźnik, dodaj nowy wskaźnik w WeaponsSystemGui/ScalingElements/DirectionalIndicators o następującej strukturze:
| Nazwa | Typ instancji | Opis |
|---|---|---|
| [UIAspectRationConstraint] | UIAspectRatioConstraint | |
| [ImageLabel] | ImageLabel | Obraz wskaźnika kierunkowego. Może być konieczne dostosowanie rotacji obrazu w Studio, chyba że przesyłasz obraz tak, aby był skierowany w dół i miał mało lub wcale wolnego miejsca wokół niego. Ten obraz/wskaźnik musi również zawierać swój własny UIAspectRatioConstraint. |
| [Configuration] | Configuration | Zawiera opcjonalne właściwości do dostosowania. Zobacz Konfigurację wskaźnika w celu uzyskania dodatkowych informacji. |
Po utworzeniu możesz aktywować wskaźnik za pomocą następującego polecenia wewnątrz WeaponsSystem/Libraries/WeaponsGui, gdzie indicatorName jest nazwą ciągu do aktywacji wskaźnika, a worldPos to pozycja świata, w której wskaźnik kierunkowy powinien wskazywać:
self.DirectionalIndicatorGuiManager:ActivateDirectionalIndicator(indicatorName, worldPos)
Konfiguracja wskaźnika
Wskaźniki kierunkowe można jeszcze bardziej modyfikować, dostosowując obiekt Configuration, będący potomkiem pod [Indicator]. Wszystkie te ustawienia mają domyślną wartość, więc nie ma potrzeby ustawiania konfiguracji, gdy nie modyfikujesz ustawienia.
Poniższe konfiguracje można ustawić:
| Nazwa | Typ instancji | Opis |
|---|---|---|
| DistanceLevelFromCenter | NumberValue | Liczba poziomów odległości od środka ekranu (każdy poziom odległości to około 0.03 skali ekranu); domyślnie to 6. |
| FadeTime | NumberValue | Czas zanikania wskaźnika po aktywacji i czasie TimeBeforeFade; domyślnie to 1. |
| Name | StringValue | Nazwa wskaźnika kierunkowego, jak chcesz go używać w kodzie; domyślnie to nazwa poziomu górnego Frame wskaźnika. |
| TimeBeforeFade | NumberValue | Liczba sekund, przez które wskaźnik będzie widoczny przed zniknięciem; domyślnie to 1. |
| TransparencyBeforeFade | NumberValue | Przezroczystość wskaźnika przed rozpoczęciem znikania; domyślnie to 0. |
| WidthLevel | NumberValue | Liczba poziomów szerokości od środka (poziom szerokości to około 0.03 skali ekranu); domyślnie to wartość DistanceLevelFromCenter. |
Wyświetlanie billboarda obrażeń
Billboard obrażeń służy do pokazywania małych cyfr nad głową postaci, gdy są one ranne. Pojawią się one tylko dla gracza, który zranił inną postać gracza, a nie dla graczy, którzy obserwują.
Billboardy obrażeń są obsługiwane w WeaponsSystem/Libraries/DamageBillboardHandler i mogą być aktywowane z dowolnego kodu klienckiego w następujący sposób, gdzie damage to ilość zadanych obrażeń, a adornmentPart to część, na której ma być umieszczony billboard, na przykład głowa ofiary:
DamageBillboardHandler:ShowDamageBillboard(damage, adornmentPart)
Kamera naramienna
Kamera naramienna to kamera trzeciej osoby, która patrzy przez prawe ramię postaci gracza. Aby dostosować kamerę naramienną, zmodyfikuj zmienne pod komentarzem -- Parametry konfiguracyjne (stałe) w funkcji ShoulderCamera.new() w WeaponsSystem/Libraries/ShoulderCamera. Możesz zmieniać rzeczy takie jak kąt widzenia, przesunięcie od postaci, prędkość poruszania podczas sprintu lub powiększenia itd.
Kontrola sprintu i powiększenia
Domyślnie system broni dodaje funkcję "sprintu", aby gracze mogli biec, przytrzymując klawisz Shift, przesuwając w górę dynamiczny joystick (mobilnie) lub przesuwając w górę lewy joystick (gamepad). Jeśli chcesz wyłączyć sprint, ustaw wartość SprintEnabled w WeaponsSystem/Configuration na false.
System również zmniejsza prędkość gracza podczas celowania/powiększania, ale możesz wyłączyć to zachowanie, ustawiając wartość SlowZoomWalkEnabled na false.









