Per assistere nella creazione di esperienze competitive basate sul combattimento, sono disponibili diverse armi approvate per l'uso in qualsiasi esperienza. Il sistema principale presenta armi basate su proiettili con una telecamera sopra la spalla e impostando la velocità del proiettile sufficientemente alta è possibile simulare armi raycasting come le pistole laser.

Per utilizzare un'arma approvata nella tua esperienza:
- Seleziona un'arma qui sotto, navigando al link della libreria degli asset.
Nella pagina dell'oggetto dell'arma, fai clic sul pulsante verde Ottieni e conferma la transazione.
In Studio, apri il Toolbox.
Seleziona la sezione Inventario del tuo toolbox.
Individua l'arma e fai clic su di essa per aggiungerla nel posto. Quando viene chiesto se inserire lo strumento nel pack iniziale, fai clic su Sì se desideri che i giocatori inizino con l'arma nel loro zaino, oppure fai clic su No per semplicemente collocare l'arma nel mondo 3D come pickup.
Se questa è la prima volta che porti dentro un'arma approvata, sposta la sua cartella WeaponsSystem in ServerScriptService per fungere da cartella unificata sistema per tutte le armi approvate nell'esperienza.

Struttura della cartella di sistema
La cartella WeaponsSystem è una cartella unificata che contiene asset, configurazioni e script che alimentano tutte le armi approvate nell'esperienza. Se collocata in ServerScriptService, sovrascrive eventuali cartelle WeaponsSystem equivalenti che potrebbero risiedere all'interno delle singole armi.

La cartella WeaponsSystem contiene le seguenti istanze:
- WeaponTypes (Folder) – Specifica tutti i tipi di armi.
- ServerWeaponsScript (Script)
- Version (IntValue)
- ClientWeaponScript (LocalScript)
- NetworkingCallbacks (ModuleScript)
- WeaponData (RemoteEvent)
- WeaponsSystem (ModuleScript)
All'interno della cartella WeaponsSystem, diversi aspetti sono controllati dai seguenti ModuleScripts:
| Aspetto | Gestito principalmente all'interno di... |
|---|---|
| Funzionalità delle armi |
|
| Telecamera sopra la spalla |
|
| GUI dell'arma |
|
Struttura dell'arma
Le armi approvate sono Tools e sono nominate come appariranno nello zaino del giocatore. Ogni arma è strutturata con una gerarchia simile.
Tipo di arma
Il WeaponType StringValue corrisponde al ModuleScript per l'arma nella cartella WeaponsSystem/WeaponTypes. I due valori base sono BulletWeapon e BowWeapon.
Modello dell'arma
Ogni arma contiene un Model composto da uno o più BaseParts per formare l'arma fisica. Uno di questi dovrebbe essere impostato come PrimaryPart del modello.

Il modello include anche i seguenti discendenti importanti che possono essere genitori di uno dei BaseParts del modello:
- TipAttachment – Attachment la cui posizione sul BasePart padre determina dove escono i proiettili/proiettili.
- HandleAttachment – Attachment la cui posizione sul BasePart padre determina dove è saldata la Maniglia.
- Discendenti aggiuntivi per eventuali opzioni specializzate.
Maniglia dell'arma
La parte Handle determina dove un personaggio del giocatore tiene l'arma. Questo deve essere un Part, deve essere nominato Handle e deve essere un figlio diretto dell'arma (strumento).
Cartella di configurazione
La cartella Configuration contiene tipi di "valore" specifici per il comportamento dell'arma. Oltre ai valori predefiniti, puoi aggiungere ulteriori elementi di configurazione per opzioni specializzate quando applicabile.
Di seguito sono riportate le configurazioni di base e i loro valori predefiniti:
| Elemento | Descrizione | Predefinito |
|---|---|---|
| AmmoCapacity | Numero di colpi in ciascun "caricatore" prima che il giocatore debba ricaricare. Nota che le munizioni sono illimitate e questo non specifica quante munizioni un giocatore sta trasportando. | 30 |
| FireMode | Scelta tra Semiautomatico (un colpo per clic/tocco), Automatico (tiro continuo) o Burst (raffica di colpi pari a NumBurstShots a ogni clic/tocco). | Semiautomatico |
| ShotCooldown | Tempo minimo di attesa tra i clic. Per le armi con FireMode di Automatico, questo è anche il tempo tra i colpi mentre si preme il pulsante di fuoco o si tiene premuto il clic. | 0.1 |
| BurstShotCooldown | Tempo tra ogni colpo in una raffica; importanza solo se imposti FireMode su Burst. | Valore di ShotCooldown |
| NumBurstShots | Numero di colpi per clic/raffica; importanza solo se imposti FireMode su Burst. | 3 |
| HitDamage | Quantità di danno che ogni colpo diretto infligge. | 10 |
| FullDamageDistance | Distanza massima alla quale i colpi infliggono pieno danno. Qualsiasi cosa colpita oltre questa distanza riceverà sempre meno danni man mano che la distanza si avvicina a ZeroDamageDistance. | 1000 |
| ZeroDamageDistance | Qualsiasi cosa colpita a questa distanza o oltre non subirà danni. | 10000 |
| BulletSpeed | Velocità con cui i proiettili/proiettili viaggiano quando vengono sparati. Impostare questo a un valore molto alto come 20000 simula armi raycasting come le pistole laser. | 1000 |
| MaxDistance | Distanza massima che i proiettili/proiettili possono viaggiare prima di scomparire. | 2000 |
| MinSpread | Minima quantità di dispersione per l'arma. | 0 |
| MaxSpread | Massima quantità di dispersione per l'arma. | Valore di MinSpread |
| GravityFactor | Quantità con cui la gravità dovrebbe influenzare ogni proiettile/proiettile. Ad esempio, questo valore per Arco è 1 perché le frecce si arcuano durante il volo, ma questo valore per Lanci missili è 0 perché i razzi spinti viaggiano dritti. | 0 |
| HasScope | Imposta su true se desideri utilizzare il mirino specificato nel GUI del sistema armi. | false |
| ReloadAnimation | Nome dell'animazione di ricarica nella cartella Assets/Animations della cartella di sistema. | RifleReload |
| AimTrack | Nome dell'animazione di mira nella cartella Assets/Animations della cartella di sistema. | RifleAim |
| AimZoomTrack | Nome dell'animazione di zoom della mira nella cartella Assets/Animations della cartella di sistema. | RifleAimDownSights |
| RecoilMin | Recoil minimo aggiunto per ogni colpo. | 0.05 |
| RecoilMax | Recoil massimo aggiunto per ogni colpo. | 0.5 |
| TotalRecoilMax | Massimo recoil accumulato totale. Il recoil attuale dell'arma non supererà mai questo valore. | 2 |
| RecoilDecay | Moltiplicatore di decadimento per il recoil; essenzialmente il tasso al quale il recoil diminuisce dopo lo sparo. | 0.825 |
| RecoilDelayTime | Tempo di attesa dopo lo sparo/clic prima che il recoil venga aggiunto alla telecamera. | 0.07 |
| StartupTime | Durata del tempo dopo aver equipaggiato l'arma prima che il giocatore possa sparare. Questo impedisce ai giocatori di sparare un solo colpo da diverse armi in rapida successione. | 0.2 |
| FiredPlaybackSpeedRange | Quantità con cui il pitch può variare per il suono Fired dell'arma. Imposta questo a 0 per riprodurlo sempre allo stesso pitch. | 0.1 |
| NumProjectiles | Numero di proiettili che verranno sparati contemporaneamente quando fai clic/tocchi una volta. Questo è utile per armi come il Fucile a pompa che spara più proiettili contemporaneamente. Nota che un colpo utilizzerà sempre esattamente una munizione indipendentemente da questo valore. | 1 |
Opzioni specializzate
Puoi aggiungere/modificare le seguenti opzioni per qualsiasi arma. Queste personalizzazioni richiedono di modificare il Model dell'arma, la Configuration dell'arma, o entrambi. Alcune configurazioni dipendono da altre, come le Particelle della bocca che richiedono i discendenti necessari per Effetti e suoni dei proiettili/impatto.
Animazioni e suoni delle chiavette
La chiavetta di un'arma è la parte che si muove avanti e indietro ogni volta che viene sparata.
- Discendenti del Modello dell'arma
| Bolt | BasePart che si muove quando l'arma viene sparata. | |
| BoltMotor | Motor6D utilizzato per animare la chiavetta. Assicurati di impostare il Part0 del motore sul PrimaryPart del modello dell'arma e il Part1 sulla parte Bolt. | |
| BoltMotorStart | Attachment la cui posizione sul BasePart padre determina dove si trova la chiavetta quando è a riposo. | |
| BoltMotorTarget | Attachment la cui posizione sul BasePart padre determina dove si anima la chiavetta durante lo sparo. | |
| BoltOpenSound | Sound che viene riprodotto quando la chiavetta si apre. | opzionale |
| BoltCloseSound | Sound che viene riprodotto quando la chiavetta si chiude. | opzionale |
- Figli della cartella di Configurazione dell'arma
| Elemento | Descrizione | Predefinito |
|---|---|---|
| ActionOpenTime | Tempo necessario perché la chiavetta si animasse nella posizione di apertura. | 0.025 |
| ActionCloseTime | Tempo necessario perché la chiavetta si animasse nella posizione di chiusura. | 0.075 |
Eiettare gusci di proiettili
Le armi possono includere gusci di proiettili fisici che si eiettano al momento dello sparo e cadono a terra.
- Discendenti del Modello dell'arma
| CasingEjectPoint | Attachment la cui posizione sul BasePart padre determina dove desideri far uscire i gusci di proiettile. Nota che la sua orientazione determina la direzione in cui i gusci escono. |
- Figli della cartella di Configurazione dell'arma
| Elemento | Descrizione | Predefinito |
|---|---|---|
| CasingEffect | Nome della parte BasePart di guscio in Assets/Effects/Casings della cartella di sistema. | |
| CasingEjectSpeedMin | Velocità di eiezione minima dei gusci | 15 |
| CasingEjectSpeedMax | Velocità di eiezione massima dei gusci | 18 |
| CasingHitSound | Sound che viene riprodotto quando i gusci colpiscono il suolo. | opzionale |
Effetti e suoni dei proiettili/impatto
Puoi configurare proiettili fisici per qualsiasi arma, insieme a Sounds, Beams e ParticleEmitters per effetti di impatto e altri effetti speciali.
- Figli della cartella di Configurazione dell'arma
| Elemento | Descrizione | Predefinito |
|---|---|---|
| ShotEffect | Nome di un effetto di colpo memorizzato in Assets/Effects/Shots della cartella di sistema. | |
| ShouldMovePart | Imposta su true se l'ShotEffect dell'arma dovrebbe muoversi con il proiettile o false se non lo fa. Dovresti impostarlo su true solo se c'è un oggetto visibile che si muove con ogni colpo, come una freccia o un razzo. | false |
| BeamFadeTime | Tempo necessario per Beam0 o Beam1 (vedi sotto) per svanire dopo che il proiettile/proiettile colpisce qualcosa. Di default, non verrà applicato alcun decadimento manuale tramite codice. | 0 |
| BeamWidth0 | Spessore di Beam0 o Beam1 a Attachment0 (vedi sotto). | 1.5 |
| BeamWidth1 | Spessore di Beam0 o Beam1 a Attachment1 (vedi sotto). | 1.8 |
| NumHitParticles | Numero di particelle che l'emettitore di HitParticles (vedi sotto) emetterà. | 3 |
| HitParticlesUsePartColor | Imposta su true se desideri che le particelle di colpo siano del colore della superficie colpita; false se desideri che le particelle di colpo non cambino colore. | true |
Discendenti di ShotEffect
Discendenti dell'ShotEffect specificato nella sezione precedente
| Flying | Sound che viene riprodotto mentre il proiettile/proiettile sta viaggiando. | opzionale |
| Beam0 | Primo slot per un Beam che segue il proiettile/proiettile. Non dimenticare di impostare Attachment0 e Attachment1. | opzionale |
| Beam1 | Secondo slot per un Beam che segue il proiettile/proiettile. Non dimenticare di impostare Attachment0 e Attachment1. | opzionale |
| Attachment0 | Attachment la cui posizione sul BasePart padre determina la parte posteriore dei fasci di trazione; assicurati di impostare Beam.Attachment0 su Beam0 e Beam1. | opzionale |
| Attachment1 | Attachment la cui posizione sul BasePart padre determina la parte anteriore dei fasci di trazione; assicurati di impostare Beam.Attachment1 su Beam0 e Beam1. | opzionale |
| TrailParticles | ParticleEmitter genitori come figlio diretto di Attachment0; questo emetterà mentre il proiettile/proiettile sta viaggiando. | opzionale |
| LeadingParticles | ParticleEmitter genitori come figlio diretto di Attachment1; questo emetterà mentre il proiettile/proiettile sta viaggiando. | opzionale |
| HitEffect | Attachment la cui posizione sarà impostata su Beam.Attachment1 di Beam0 quando il proiettile/proiettile colpisce. Devi specificare Beam0 e le sue attacchi affinché questo funzioni correttamente. | opzionale |
| HitSound | Sound genitori come figlio diretto di HitEffect; riproduce quando il proiettile/proiettile colpisce. | opzionale |
| HitParticles | Sound genitori come figlio diretto di HitEffect; emette quando il proiettile/proiettile colpisce. | opzionale |
| [ProjectilePart] | Qualsiasi Part o MeshPart che desideri apparire come un proiettile fisico. Assicurati di impostare ShouldMovePart annotato nella sezione precedente su true se hai un oggetto visibile qui. | opzionale |
Particelle della bocca
Questa opzione emette particelle dall'emettitore di particelle specificato dall'Attachment della TipAttachment quando viene sparata l'arma.
Discendenti della configurazione:

- ShotEffect (StringValue) — Nome di un effetto di colpo memorizzato in WeaponsSystem/Assets/Effects/Shots.
- NumMuzzleParticles (IntValue) (opzionale) — Numero di particelle della bocca che verranno emesse; il predefinito è 50.
Per l'effetto di colpo specificato, aggiungi un asset ParticleEmitter all'interno di WeaponsSystem/Assets/Effects/Shots nominato MuzzleParticles.

Lampi della bocca
Questa opzione crea un effetto di flash Beam quando l'arma viene sparata.
Discendenti del modello:

- MuzzleFlash0 (Attachment) — Utilizzato per specificare un lato del flash della bocca. La posizione non ha importanza.
- MuzzleFlash1 (Attachment) — Utilizzato per specificare il lato opposto del flash della bocca. La posizione non ha importanza.
- MuzzleFlash (Beam) — Assicurati di impostare Attachment0 su MuzzleFlash0 e Attachment1 su MuzzleFlash1.
Discendenti della configurazione:

- MuzzleFlashRotation0 (NumberValue) (opzionale) — Rotazione minima del flash della bocca; il predefinito è -math.pi.
- MuzzleFlashRotation1 (NumberValue) (opzionale) — Rotazione massima del flash della bocca; il predefinito è math.pi.
- MuzzleFlashSize0 (NumberValue) (opzionale) — Dimensione minima del flash della bocca; il predefinito è 1.
- MuzzleFlashSize1 (NumberValue) (opzionale) — Dimensione massima del flash della bocca; il predefinito è 1.
Sentieri di particelle
Questa opzione crea un sentiero di lunghezza variabile dall'arma al punto di impatto del proiettile.
Discendenti della configurazione:

- TrailLength (NumberValue) (opzionale) — Lunghezza del sentiero dietro al proiettile; il predefinito è nil, il che significa che la lunghezza del sentiero verrà calcolata utilizzando TrailLengthFactor.
- TrailLengthFactor (NumberValue) (opzionale) — La lunghezza del sentiero sarà impostata su questo valore moltiplicato per la distanza percorsa dal proiettile nella scorsa cornice; il predefinito è 1. Nota che questo verrà sovrascritto se includi TrailLength.
- ShowEntireTrailUntilHit (BoolValue) (opzionale) — Imposta su true per rendere visibile il sentiero dalla punta dell'arma fino a dove si trova il proiettile; questo sovrascriverà sia TrailLength che TrailLengthFactor, e il sentiero scomparirà solo una volta che il proiettile colpisce qualcosa. Imposta su false per utilizzare una delle due opzioni sopra per calcolare la lunghezza del sentiero. Il predefinito è false.
Segni di colpo
Questa aggiunta visiva appare sulla superficie dove i proiettili colpiscono e è utile per frecce, fori di proiettile, segni di bruciore, ecc.
Discendenti della configurazione:

- HitMarkEffect (StringValue) (opzionale) — Nome dell'effetto di segno di colpo memorizzato in WeaponsSystem/Assets/Effects/HitMarks; il predefinito è BulletHole.
- AlignHitMarkToNormal (BoolValue) (opzionale) — Imposta su true se il segno di colpo dovrebbe sempre allinearsi piatto contro la superficie come un foro di proiettile, o false se il segno di colpo dovrebbe apparire conficcato nella superficie dalla direzione da cui è arrivato il proiettile (come una freccia). Il predefinito è true.
Puoi aggiungere il seguente asset opzionale all'interno di WeaponsSystem/Assets/Effects/HitMarks:

- Glow (Decal) (opzionale) — Appare sulla superficie colpita completamente opaca, poi rapidamente diventa più trasparente, come un effetto luminoso sulla superficie che svanisce rapidamente. Utile per mostrare un segno rosso luminoso dove sono esplosi gli esplosivi.
- BulletHole (Decal) (opzionale) — Appare sulla superficie colpita completamente opaca e, dopo 4 secondi, svanisce in trasparente in 1 secondo.
- ImpactBillboard (BillboardGui) (opzionale) — Visualizza sulla superficie colpita, sempre rivolto verso la telecamera.
- Impact (ImageLabel) (opzionale) — Figlio diretto di ImpactBillboard; inizia completamente opaco, cresce fino alla dimensione completa di ImpactBillboard in 0.1 secondi, poi si riduce alla metà della sua dimensione e svanisce fino alla trasparenza completa in 0.1 secondi.
- Qualsiasi Part/MeshPart/SpecialMesh che desideri apparire come un proiettile fisico (opzionale). Ad esempio, includendo un MeshPart per una freccia e impostando AlignHitMarkToNormal notato sopra su false farà sì che la freccia sporga dalla superficie nella direzione dalla quale è stata sparata.
Proiettili esplosivi
I proiettili possono includere un oggetto Explosione per danneggiare i personaggi giocatore in un'area intorno al punto di impatto.
Discendenti della configurazione:

- ExplodeOnImpact (BoolValue) (opzionale) — Imposta su true se desideri che i proiettili dell'arma esplodano all'impatto, false altrimenti. Il predefinito è false.
- BlastPressure (NumberValue) (opzionale) — Pressione di esplosione dell'esplosione; il predefinito è 10000.
- BlastDamage (NumberValue) (opzionale) — Danno inflitto a cose nel centro dell'esplosione. Nota che l'esplosione infligge meno danni man mano che gli oggetti colpiti si allontanano dal centro dell'esplosione. Il predefinito è 100.
Arma di carica
Un'arma di carica come il Railgun deve essere caricata tra i colpi prima di poter sparare di nuovo.
Discendenti del modello:

- Charging (Sound) (opzionale) — Viene riprodotto mentre l'arma si sta caricando.
- Discharging (Sound) (opzionale) — Viene riprodotto mentre l'arma si sta scaricando, ad esempio se carichi parzialmente l'arma e rilasci il pulsante di sparo.
- ChargeComplete (Sound) (opzionale) — Viene riprodotto quando l'arma ha raggiunto la carica completa.
- DischargeComplete (Sound) (opzionale) — Viene riprodotto quando l'arma è stata completamente scaricata.
- ChargeGlow (BasePart) (opzionale) — Questo oggetto diventerà meno trasparente man mano che l'arma si carica, in modo che sia completamente opaco al 100% di carica.
- ChargeCompleteParticles (ParticleEmitter) (opzionale) — Emesso quando l'arma ha terminato la carica. Questo emettitore può essere un figlio di qualsiasi parte BasePart del modello o un figlio di un Attachment all'interno del BasePart.
- DischargeCompleteParticles (ParticleEmitter) (opzionale) — Emesso quando l'arma è stata completamente scaricata. Questo emettitore può essere un figlio di qualsiasi parte BasePart del modello o un figlio di un Attachment all'interno del BasePart.
- ChargingParticles (ParticleEmitter) (opzionale) — Emesso mentre l'arma si sta caricando. Puoi includere più emettitori di questo nome e ognuno emetterà durante la fase di carica. Questo emettitore può essere un figlio di qualsiasi parte BasePart del modello o un figlio di un Attachment all'interno del BasePart.
Discendenti della configurazione:

- ChargeRate (NumberValue) — Tasso di caricamento dell'arma. Questo valore deve essere specificato per indicare che l'arma utilizza la carica.
- DischargeRate (NumberValue) (opzionale) — Tasso al quale l'arma si scaricherà; il predefinito è 0, il che significa che l'arma non si scaricherà affatto.
- ChargePassively (BoolValue) (opzionale) — Imposta su true se desideri che l'arma si carichi in modo passivo per sparare istantaneamente quando clicchi, o false se desideri cliccare/toccare per caricare l'arma e farla sparare una volta raggiunta la carica completa. Il predefinito è false.
- ChargingParticlesRatePerCharge (IntValue) (opzionale) — Numero di particelle che emetteranno tutti i ChargingParticles emettitori moltiplicato per la carica attuale dell'arma. Il predefinito è 20, il che significa che se la carica dell'arma è al 10%, ciascun emettitore di ChargingParticles emetterà 2 particelle (20×0.1), e se la carica dell'arma è al 90%, ciascun emettitore emetterà 18 particelle (20×0.9).
- FireDischarge (NumberValue) (opzionale) — Quantità di carica che l'arma perderà dopo aver sparato un colpo completamente carico; il predefinito è 1.
- NumChargeCompleteParticles (IntValue) (opzionale) — Numero di particelle che l'emettitore di ChargeCompleteParticles emetterà una volta che l'arma è completamente carica. Il predefinito è 25.
- NumDischargeCompleteParticles (IntValue) (opzionale) — Numero di particelle che l'emettitore di DischargeCompleteParticles emetterà quando l'arma è completamente scaricata. Il predefinito è 25.
Arma arco
Un'arma arco come l'Arco incrociato può includere una costruzione realistica di corda e braccia, così come una freccia visiva incoccata sulla corda.
Oltre ad aggiungere discendenti del modello, devi applicare i seguenti:
- Trasforma l'arma in un' arma di carica. Ad esempio, aggiungi il necessario ChargeRate all'interno della Configuration dell'arma che specifica quanto velocemente viene tesa la corda. Inoltre, considera di aggiungere discendenti opzionali al modello dell'arma come un suono Charging per la corda/braccia tirate indietro.
Discendenti del modello:

- LeftString (Beam) (opzionale) — La metà sinistra visiva della corda.
- RightString (Beam) (opzionale) — La metà destra visiva della corda.
- Arrow (BasePart) (opzionale) — La freccia che appare quando l'arco è completamente teso. Nota che questo è solo per l'aspetto visivo dell'arco (la freccia effettivamente sparata sarà un ShotEffect come delineato in Effetti di proiettile/impatto e suoni).
- String1 (Attachment) (opzionale) — Il punto centrale della corda.
- StringLoose (Attachment) (opzionale) — Punto in cui String1 dovrebbe trovarsi quando l'arco è a riposo.
- StringTight (Attachment) (opzionale) — Punto in cui String1 dovrebbe trovarsi quando l'arco è completamente teso.
- Arms (Part) (opzionale) — Una parte che funge solo da indicatore interno che le braccia dell'arco saranno animate. Questo può contenere i seguenti figli diretti:
- LeftString0 (Attachment) (opzionale) — Punto in cui il lato sinistro della corda è attaccato all'arco.
- RightString0 (Attachment) (opzionale) — Punto in cui il lato destro della corda è attaccato all'arco.
- LeftLoose (Attachment) (opzionale) — Punto in cui LeftString0 dovrebbe trovarsi quando l'arco è a riposo.
- RightLoose (Attachment) (opzionale) — Punto in cui RightString0 dovrebbe trovarsi quando l'arco è a riposo.
- LeftTight (Attachment) (opzionale) — Punto in cui LeftString0 dovrebbe trovarsi quando l'arco è completamente teso.
- RightTight (Attachment) (opzionale) — Punto in cui RightString0 dovrebbe trovarsi quando l'arco è completamente teso.
- [SpecialMesh] (SpecialMesh) (opzionale) — La parte dell'arco che effettivamente si piega quando l'arco viene teso. Nota che devi specificare i seguenti quattro oggetti Vector3Value affinché questo si animati.
GUI del sistema armi
Il sistema armi principale interagisce con questo sistema per aggiornare la GUI in base a variabili come la dispersione dell'arma, indicatori per quando vieni colpito o colpisci altri, ecc.
Il WeaponsSystemGui è un oggetto ScreenGui in WeaponsSystem/Assets che è genitore di PlayerGui all'avvio dell'esperienza. WeaponSystemGui ha 4 discendenti:
- ScalingElements - Una Folder di elementi sullo schermo.
- LargeTouchscreen - Un Frame per i pulsanti sugli schermi touch grandi.
- SmallTouchscreen - Un Frame per i pulsanti sugli schermi touch piccoli.
Elementi scalabili
ScalingElements è una Folder genitore sotto WeaponsSystemGui con i seguenti discendenti:
| Nome | Tipo di istanza | Descrizione |
|---|---|---|
| DirectionalIndicators | Folder | Una Folder in cui sono memorizzati tutti gli indicatori direzionali. |
| Crosshair | Frame | Una Frame contenente i seguenti oggetti: [UIAspectRationConstraint] - UIAspectRatioConstraint Bottom - ImageLabel Left - ImageLabel Right - ImageLabel Top - ImageLabel |
| HitMarker | Frame | Una Frame contenente i seguenti oggetti: [UIAspectRatioConstraint] - UIAspectRatioConstraint HitMarkerImage - ImageLabel che appare e svanisce quando il giocatore colpisce un altro personaggio giocatore. |
LargeTouchscreen
LargeTouchscreen è un Frame contenente pulsanti che vengono visualizzati sugli schermi touch grandi. LargeTouchscreen ha i seguenti discendenti:
- AimButton (ImageButton)
- FireButton (ImageButton)
Scope
Scope è un Frame che contiene ScopeImage (ImageLabel) che appare quando si zooma su un'arma con HasScope abilitato (vedi Struttura dell'arma).
Scope ha i seguenti discendenti:
| Nome | Tipo di istanza | Descrizione |
|---|---|---|
| ScopeInstance | Frame | Una Frame contenente gli asset utilizzati quando si zooma su un'arma con HasScope abilitato: [UIAspectRationConstraint] - UIAspectRatioConstraint BottomBlack - Frame LeftBlack - Frame RightBlack - Frame TopBlack - Frame |
SmallTouchscreen
SmallTouchScreen è un Frame contenente pulsanti che vengono visualizzati sugli schermi touch piccoli. SmallTouchscreen ha i seguenti discendenti:
- AimButton (ImageButton)
- FireButton (ImageButton)
Creare un indicatore direzionale
Gli indicatori direzionali sono utilizzati per mostrare la direzione di qualcosa intorno al mirino del giocatore. Ad esempio, se qualcuno ti spara, un semicerchio rosso può apparire intorno al mirino nella direzione da cui proviene il colpo. Altri esempi includono indicatori per mostrare la direzione dei passi, il fuoco indiretto o anche oggetti ambientali come forzieri.
Per creare un nuovo indicatore, aggiungi un nuovo indicatore Frame in WeaponsSystemGui/ScalingElements/DirectionalIndicators con la seguente struttura:
| Nome | Tipo di istanza | Descrizione |
|---|---|---|
| [UIAspectRationConstraint] | UIAspectRatioConstraint | |
| [ImageLabel] | ImageLabel | Immagine dell'indicatore direzionale. Potrebbe essere necessario modificare la rotazione dell'immagine in Studio a meno che tu non carichi l'immagine in modo che sia rivolta verso il basso e ci sia poco o nessuno spazio vuoto attorno. Questa immagine label deve anche contenere il proprio UIAspectRatioConstraint. |
| [Configuration] | Configuration | Contiene proprietà opzionali da modificare. Vedi Configurazione dell'indicatore per ulteriori informazioni. |
Una volta creato, puoi attivare un indicatore tramite il comando seguente all'interno di WeaponsSystem/Libraries/WeaponsGui dove indicatorName è il nome della stringa dell'indicatore da attivare e worldPos è la posizione del mondo a cui l'indicatore direzionale dovrebbe puntare:
self.DirectionalIndicatorGuiManager:ActivateDirectionalIndicator(indicatorName, worldPos)
Configurazione dell'indicatore
Gli indicatori direzionali possono essere ulteriormente modificati regolando l'oggetto Configuration genitore sotto il [Indicatore]. Tutte queste impostazioni hanno un valore predefinito, quindi non è necessario impostare configurazioni quando non si modifica un'impostazione.
Le seguenti configurazioni possono essere impostate:
| Nome | Tipo di istanza | Descrizione |
|---|---|---|
| DistanceLevelFromCenter | NumberValue | Numero di livelli di distanza dal centro dello schermo (ogni livello di distanza è di circa 0.03 scala dello schermo); il predefinito è 6. |
| FadeTime | NumberValue | Tempo di svanimento dell'indicatore dopo la sua attivazione e il tempo di TimeBeforeFade; il predefinito è 1. |
| Name | StringValue | Nome dell'indicatore direzionale come desideri riferirlo nel codice; il predefinito è il nome del Frame di livello superiore dell'indicatore. |
| TimeBeforeFade | NumberValue | Numero di secondi in cui l'indicatore apparirà prima di svanire; il predefinito è 1. |
| TransparencyBeforeFade | NumberValue | Trasparenza dell'indicatore prima che inizi a svanire; il predefinito è 0. |
| WidthLevel | NumberValue | Numero di livelli di larghezza dal centro (ogni livello di larghezza è di circa 0.03 scala dello schermo); il predefinito è il valore di DistanceLevelFromCenter. |
Mostra cartellone danni
Il cartellone danni viene utilizzato per mostrare piccoli numeri sopra la testa di un personaggio quando subiscono danni. Questi verranno mostrati solo per il giocatore che ha danneggiato il personaggio di un altro giocatore, non per i giocatori spettatori.
I cartelloni danni sono gestiti in WeaponsSystem/Libraries/DamageBillboardHandler e possono essere attivati da qualsiasi codice lato client come segue, dove il danno è l'ammontare di danno inflitto e adornmentPart è la parte su cui decorare il cartellone, come la testa della vittima:
DamageBillboardHandler:ShowDamageBillboard(damage, adornmentPart)
Telecamera sopra la spalla
La telecamera sopra la spalla è una telecamera in terza persona che guarda sopra la spalla destra del personaggio del giocatore. Per personalizzare la telecamera sopra la spalla, modifica le variabili sotto il commento -- Parametri di configurazione (costanti) nella funzione ShoulderCamera.new() di WeaponsSystem/Libraries/ShoulderCamera. Puoi modificare cose come il campo visivo, lo spostamento dal personaggio, la velocità di camminata durante lo sprint o lo zoom, ecc.
Controllo sprint e zoom
Per impostazione predefinita, il sistema delle armi aggiunge la capacità di "sprint", quindi i giocatori possono sprintare tenendo premuto il tasto Shift, premendo completamente il joystick dinamico (mobile), o premendo completamente il joystick sinistro (gamepad). Se desideri disabilitare lo sprint, imposta il valore di SprintEnabled all'interno di WeaponsSystem/Configuration su false.
Il sistema riduce anche la velocità del giocatore mentre sta mirando/zoomando, ma puoi disabilitare questo comportamento impostando il valore di SlowZoomWalkEnabled su false.









