Sistemi di supporto

*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.

Abbiamo utilizzato i seguenti sistemi per supportare sia i sistemi di gioco fondamentali, così come qualsiasi obiettivo dei requisiti principali di progettazione.

UsaManager

UseManager fornito un'API semplice per applicare un oggetto preso su qualcosa, come un pezzo di abbigliamento a più strati su un manichino. La funzione principale per questa API è UseManager.AddUse (etichet

Potremmo rimuovere il "utilizzo" con UseManager.RemoveUse , che di solito era utile quando una missione era finita o un oggetto specifico era "utilizzato". Inoltre, potremmo aggiungere o rimuovere i target con AddUseTargets e RemoveUseTargets .

Highlights

Qu

Questo LocalScript utilizza una nuova funzione del motore Highlight che disegna un'outline di un

HighlightItemsFunc viene utilizzato per comunicare con altri sistemi client. Ad esempio, EventManager usa con un comando Abilita per abilitare o disabil

Bubble di conoscenza e pensiero

Lore e ThoughtBubbles sono 2 sistemi simili. Lore usa un ScreenGui come container UI on-screen con un figlio

La conoscenza viene implementata nel LoreManger LocalScript . Quando viene cliccata o toccata, attiva un raycast utilizzando una funzione aiutante utils.RaycastAlongPointingDir

Nota che usiamo Camera.ViewportPointToRay o Camera.ScreenPointToRay per costruire il raggio, a seconda se è stato chiamato da un non-触摸 o da un dispositivo touch. Le coordinate sono in sistemi di coordinate leggermente diversi. Per il

Le bolle di pensiero sono generalmente simili, utilizzando un raycast per controllare se un mesh o i suoi genitori hanno un tag ThoughtBubble . It also uses the ThoughtText attribute for text, and a ThoughtBubble tag to point to a placeholder object used for positioning the UI in the Mondo. Le bolle di pensiero che utilizzano lo stesso positional oggetto ma hanno diversi testi hanno diversi cooldown.

Casse speciali

La lore ha un paio di casi speciali, uno dei quali è il corso. Qu LoreManager gestisce anche un caso speciale con la visualizzazione di una piccola scena quando si fa clic su porte disabilitate che sono bloccate fino a quando il giocatore non prende il sigillo della stanza.

OnItemIndicator

Vogliamo mostrare diversi pulsanti nel centro dello schermo quando il giocatore guarda a determinati oggetti di interesse. Lo script del client OnItemindicator fa un raycast lungo la fotocamera Class.CFrame.LookVector e analizza i risultati. In base ai risultati, imposta un'immagine nell'onItemIndicator2 ScreenGui .

Quando non sono presenti articoli di interesse, l'Iconapredefinita è un piccolo punto. Potremmo impostare qualsiasi icona aggiungendo un'attributo OnItemIndicator a una rete Mesh, maglia, utilizzando i nomi da onItemIndicatorImages , come Hand, Eye o DoorCurrentlyLocked. L'attributo è necessario solo in casi rari e la maggior parte delle vol

Digita alcuni in un ordine di priorità. Dopo l'覆盖 di OnItemIndicator , controlliamo se è afferrabile o un Drawer per l'icona della mano attraverso utils.CanGrabModel(model) o utils.GetTaggedObjectUpHierarchy("Drawer2", model) .


highlightItemsFunc:Invoke({"GetType", curInst})

I tag Lore e ThoughtBubble vengono controllati in seguito controllando i tag. Per le porte, abbiamo 2 diversi icone: DoorCurrentlyClosed e DoorAlwaysLocked . 1> DoorManager1> imposta un attributo vero o falso 4>

Gestore della porta

Il Gestore della portaLocalScript usa un tag Porta e 2>Class.CollectionService2> per gestire l'apertura e la chiusura delle porte. La porta ha trigger frontali e posteriori che connettiamo con il tocco e gli eventi

Ogni porta ha un semplice sistema di stato, DoorState (Chiusa, Apertura, Apertura, Chiusura), con i tweens usati per le transizioni. Possiamo abilitare o disabilitare l'abilità di una porta ad aprire o chiudere da sistemi esterni chiamando DoorManager.EnableDoor , che imposta un'attributo DoorEnabled.

Animatore Master

Il MasterAnimatorLocalScript play animazioni animazioni (texture atlas), che avevamo

Un oggetto con un animato SurfaceGui avrebbe un Animator Class.ModuleScript

Animazioni locali

Le animazioni localiLocalScript utilizzano un tag localSpaceRotation per ruotare la maggior parte degli oggetti "cosmetici" con una velocità di rotazione e un ritardo specificati in un d

Gestore della lampada da testa

Il HeadlampManager gestisce quando gli utenti selezionano il LocalScript sullo schermo per attivare il focus sulle loro teste in testa o in giù, attiva i comment

Gestore sedili

Non vogliamo che i giocatori si siedano automaticamente quando vicino a un oggetto possono sedersi. Invece, vogliamo

Gestore del Cassetto

Lo script DrawerManager usa un tag Drawer2 e CollectionService per gestire il clic sui cassetti per aprire o chiudere e riprodurre qualsiasi audio/suonocorrispondente. L'azione di apertura e chiusura viene eseguita impostando la posizione di destinazione per un 1> Class.PrismaticConstraint1> .

Volume di uccisione

In due aree della principale area di gioco, come gli spark e l'acqua vicino all'inizio della strada che conduce alla casa, un giocatore può avere il suo Humanoid.Health impostato su 0 quando entra in un volume con il tag Uccidi

PlayerMissionRespawn

Lo script PlayerMissionRespawn usa un tag RespawnVolume e CollectionService per gestire i volumi che fanno apparire i giocatori quando vengono toccati. Abbiamo posizionato questi volumi sotto le stanze corrotte, poiché molte missioni hanno inter

Quando si elabora GameEvents.PlayerRespawn, lo script può utilizzare RespawnPositions, se la configurazione della missione lo consente. Se non lo facessero, utilizzerebbe TeleportPositions

Sistemi di piccolo aiuto

Gestore del Piano

Lo script PianoManager usa un tag Piano e CollectionService per aggiungere 1> Class.ClickDetector|ClickDetectors1> e giocare uno dei suoni del pianoforte quando viene cliccato sul tastierino.

Supporto Rituale

Il foyer in cui i giocatori inseriscono le sigillature ha un complicato contrappeso che subisce cambiamenti in base a ciascuna sigillatura viene posizionata nella sua posizione definita. Ad esempio, a seconda del numero di sigillature inserite, si attiva/disattiva le luci e i raggi, cambia la tr

Gestore della ripristinabilità

Alcuni oggetti afferrabili sono importanti per il Partita, come le sigillature, e non volevamo che si perdessero se un giocatore le lasciava cadere da qualche parte. Se un oggetto ha un tag Restorable , lo script RestorableManager.StartTracking

Portali

In poche missioni, teletrasportiamo i giocatori in una breve distanza all'interno di una missione, come rigenerazione dei giocatori che cadono da una Piattaformagirevole. Per semplificare la configurazione di questo tipo di teletrasporto, che chiamiamo "Portals" nel script, una funzione di aiuto ProcessPortal


P1.Touched:Connect(function(otherPart) utils.ProcessPortal(otherPart, P2) end)

ProcessPortal gestisce il controllo che altroPart sia un umano, teletrasportando il giocatore attraverso un CFrame cambiamento di coordinamento e invocando una piccola cutscene per nascondere la transizione utilizzando un evento Teleport_Jump in 0> EventManager0> .

Script di configurazione

Abbiamo diversi script di configurazione, definizione dei dati e script di funzionalità comune: Configurazione della dimostrazione . Definizioni delle missioni. Elenco degli stati del gioco, eventi per le comunicazioni client-server. Impostazioni globali di dimostrazione . Ci sviluppiamo in un Posto, ma rilasciamo (e Test di giocabilità) in altri. Lo script controlla il ID del luogo e abilita/disabilita varie funzionalità di debug. DemoUtilities . Varie funzioni utilità. Gestire le trasformazioni. Impostare la visibilità, l'ancoraggio o altre proprietà. Controllare per un punto in una Quadro di selezione. Trovare oggetti nella gerarchia dal nome "dotted" . Gestire TempStorage (che può essere utilizzato per spostare temporaneamente i modelli "qualche parte lontano" e riportare più tardi). Clicca sugli aiut AudioUtilities . Un paio di funzioni per riprodurre suoni pesanti casuali da un Impostare. GrabUtil . Funzioni dell'aiutante per l'aggiappamento.