Wspierane systemy

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

Użyliśmy następujący systemy, aby wspierać zarówno podstawowe systemy gry, jak i wszystkie cele z głównych wymagań projektowych.

UżyjMenedżera

Użyj Managera zapewnił prosty interfejs API, aby zastosować chwytany obiekt na czymś, jak kawałek odzieży z kapturem na manekinie. Główną funkcją dla tego interfejsu jest

Możemy usunąć "użyj" za pomocą UseManager.RemoveUse, co zwykle było pomocne, gdy misja została zakończona lub określony przedmiot został "użyty". Ponadto możemy dodać lub usunąć cele z AddUseTargets i RemoveUseTargets .

Podkreślenia

Gdy

Ten LocalScript używa nowej funkcji silnika Highlight, która rysuje kontur obiektu i/

HighlightItemsFunc używany jest do komunikacji z innymi systemami klienta. Na przykład, EventManager używa go z komendą Włącz

Wiedza i ThoughtBubbles

Lore and ThoughtBubbles are 2 similar systems. Lore uses a ScreenGui as an on-screen UI container with a child

Wiedza jest implementowana w LoreManger LocalScript . Gdy jest kliknięta lub dotykana, wysyłuje promieniową cast używając funkcji pomocniczej utils.

Uwaga, że używamy Camera.ViewportPointToRay lub Camera.ScreenPointToRay , aby zbudować promień, w zależności od tego, czy został on wezwany z nie dotykowej lub dotykowej. Koordynaty są w nieco różnych system

Bąbelki myśli są ogólnie podobne, używając kastu promienia, aby sprawdzić, czy sieć lub jej rodzice mają tag Bąbelka myśli. Używa również atrybutu ThoughtText dla tekstu i tagu Bąbelka myśli do wskazania na obiekt placeholder, używany do pozycjonowania interfejsu w świecie. Bąbelki myśli, które używają tego same

Specjalne przypadki

Lore ma kilka specjalnych przypadków, jednym z nich jest uszkodzony LoreManager również zarządza specjalnym przypadkiem, pokazując małą scenę, gdy klikniesz wyłączone drzwi, które są zablokowane do momentu podjęcia przez gracza pieczątki pokoju.

Na ItemIndicator

Chcemy pokazać różne ikony w centrum ekranu, gdy gracz patrzy na niektóre przedmioty zainteresowania. Skrypt kliencki na ekranie w OnItemindicator wykonuje rajast promieniowania wokół kamery Class.CFrame.LookVector i analizuje wyniki. Na podstawie wyników ustawia obraz w OnItemIndicator2 ScreenGui.

Gdy nie trafiają żadne interesujące przedmioty, domyślnym ikona jest mały kropik. Możemy ustawić dowolną ikona poprzez dodanie do określonego siatki 属性 OnItemIndicator , takich jak ręka, oko lub DoorCurrentlyLocked. Attrybut jest tylko w rzadkich przypadkach, a większość czasu

Typuje sprawdzenia w pewnym porządku priorytetu. Po przekazaniu OnItemIndicator przez utils.CanGrabModel(model) lub utils.GetTaggedObjectUpHierarchy("Drawer2", model) sprawdza się, czy jest chwytalny lub szuflada dla


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

Tagi Lore i ThoughtBubble są sprawdzane później poprzez sprawdzanie tagów. Dla drzwi mamy 2 różne ikony: DoorCurrentlyClosed i DoorAlwaysLocked. 1> DoorManager1> ustawia prawdziwy lub fał

Zarządzacz drzwiami

DoorManager używa etykiety LocalScript i Class.LocalScript do zarządzania otwarciem i zamknięciem drzwi. Drzwi mają trygry z przodu i z tyłu, do których łączymy się za pomocą dotyku

Każde drzwi ma prosty system stanu, DoorState (Zamknięty, otwarte, otwarte, zamknięte), z użyciem tłumienień dla przejść. Możemy włączyć lub wyłączyć zdolność otwierania lub zamykania drzwi z zewnętrznymi systemami, poprzez wezwanie DoorManager.EnableDoor, co ustawia atrybut DoorEnabled

MistrzAnimator

Animator mistrzowski Class.LocalScript a animuje animacje (tęczę atlasu), które uży

Obiekt z animowanym SurfaceGui miałby Animator ModuleScript, z główn

Lokalne animacje animacji

The Lokalne Animacje Przestrzeni Roboczej LocalScript używa tagu Lokalna Przestrzeń Przestrzeni Roboczej do obrotu większości "

Zarządzacz lampami głównymi

HeadlampManagerLocalScript ułatwia użytkownikom selekcję ImageButton na ekranie, aby włączyć świat

Zarządzacz Siedzeniami

Nie chcemy, aby gracze automatycznie siedzieli, gdy blisko obiektu, na którym mogą teleportować się

Menedżer Drawerów

Skrypt DrawerManager używa tagu Drawer2 i CollectionService, aby zarządzać klikaniem na szuflady, aby je otworzyć lub zamknąć, i odtwarzać odpowiednią ilość dźwięk. Akcja otwierania i zamykania jest wykonana ustawiając 1>Pozycję celu1> dla 4>Class.PrismaticConstraint4>.

Zabijgromy

W kilku obszarach głównej gry w obszarze gameplay, takich jak elektryczne migoczenia i woda w pobliżu początku drogi prowadzącej do domu, gracz może mieć swoje Humanoid.Health ustawione na 0

PlayerMissionRespawn

Skrypt PlayerMissionRespawn używa tagu RespawnVolume i CollectionService, aby poradzić sobie z wolumenami, które sprawiają, że gracze respawnują po dotknięciu. Umieściliśmy te wolumeny pod sk

Podczas przetwarzania GameEvents.PlayerRespawn , skrypt może użyć RespawnPositions, jeśli konfiguracja misji to umożliwia. Jeśli nie, to używa

Małe systemy pomocnicze

Menedżer Klawiatury

Skrypt PianoManager używa tagu Piano i CollectionService, aby dodać 1> Class.ClickDetector|KlikDetectors1> i odtwarzyć jeden z dźwięków fortepianu przy kliknięciu klawiatury.

Ritualne Wsparcie

Foyer, w którym gracze stawiają pieczątki, ma złożoną konstrukcję, która podlega zmianom, gdy każda pieczątka jest umieszczona w jej zdefiniowanej lokalizacji. Na przykład, w zależności od liczby umieszczonych piecząatek

Zarządzacz Zgubionych

Niektóre chwytne obiekty są ważne dla rozgrywka, takie jak uszczelki, i nie chcieliśmy, aby zostały one tracone, jeśli gracz je upuści gdzieś. Jeśli obiekt ma tag RestorableManager, Restorable

Portale

W kilku misjach teleportujemy graczy niewielką odległość w ramach misji, taką jak respawning graczy, którzy spadają z kręcącej się platforma. Aby uproszczyć ustawienie tego typu teleportacji, które nazyamy "Portals" w skrypcie, funkcję pomocniczą Process


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

ProcessPortal ręczy czekającej, czy inna część jest człowiekiem, teleportującego gracza poprzez zmianę koordynatową CFrame i wzywania małego cutscene'u, aby ukryć przejście używając małego wydarzenia Teleport_Jump w 0>EventManager0> .

Skrypty Konfiguracyjne

Mamy kilka konfiguracji, definicji danych i wspólnych skryptów funkcjonalności: DemoConfig . Definicje misji. Numeracje dla stanów gry, wydarzenia dla komunikacji klienta-serwera. DemoGlobalSettings . Rozwijamy się w jednym miejsce, ale uwalniajemy (i testujemy) w innych. Skrypt sprawdza placeID i włącza/włącza różne cheaty i funkcje debugowania. DemoUtilities . Różne funkcje utilitarnych. Poradzenie się z transformacjami. Ustawianie widoczności, przyczepianie lub inne właściwości. Czekanie na punkt w kutce. Finding objects in hierarchy by "dotted" name. Managing TempStorage (that can be used to temporarily move models "somewhere far" and bring back later). Kliknięcia pomocników. Grabbing support. AudioUtilities . Kilka funkcji do odtwarzania dźwiękowych losowych dźwięków z ustawiać. GrabUtil . Funkcje pomocnicze do grabienia.