Chúng tôi đã sử dụng các hệ thống sau đây để hỗ trợ cả hai hệ thống gameplay cơ bản, cũng như bất kỳ mục tiêu nào của yêu cầu thiết kế chính .
Sử dụng Manager
Cung cấp một API đơn giản để áp dụng một đối tượng bị lấy trên một cái gậy như một mảnh quần áo vật phẩmtrên
Chúng tôi có thể loại bỏ "sử dụng" với UseManager.RemoveUse, which thường hữu ích khi một nhiệm vụ đã kết thúc hoặc một mục đã "được sử dụng". Ngoài ra, chúng tôi có thể thêm hoặc bỏ bớt mục tiêu với AddUseTargets và RemoveUseTargets</
Điểm nổi bật
This LocalScript utilizes a new engine tính năngHighlight that draws an outline of an object and/or fills the
HighlightItemsFunc được sử dụng để truyền thông với các hệ thống khác của khách hàng. Ví dụ,
Lore và ThoughtBubbles
Lore and ThoughtBubbles are 2 systems similar. Lore uses a ScreenGui as an on-screen UI container with a child
Lore được thực hiện trong LoreManger LocalScript . Khi nhấp hoặc chạm vào nó, nó phát ra một raycast bằng c
Lưu ý rằng chúng tôi sử dụng Camera.ViewportPointToRay hoặc Camera.ScreenPointToRay để xây dựng cái ray, tùy thuộc vào nếu nó đượ
ThoughtBubbles tổng thể tương tự, using a raycast to check if a mesh or its parents have a ThoughtBubble tag. 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 world. Thought bubbles that use the same positional object but have different text have different cooldowns.
Các trường hợp đặc biệt
Lore có một vài trường hợp đặc bi LoreManager cũng xử lý một trường hợp đặc biệt với việc hiển thị một cảnh cắt nhỏ khi nhấp vào các cửa bị khóa cho đến khi người chơi nhặt lên chìa khóa của phòng.
Trên ItemIndicator
Chúng tôi muốn hiển thị các biểu tượng khác nhau ở trung tâm màn hình khi người chơi nhìn vào một số mặt hàng quan tâm nhất định. Kịch bản client OnItemindicator được thực hiện bằng cách phản chiếu các tia
Khi không có vật phẩm quan tâm được đánh, biểu tượng mặc định là một dấu chấm nhỏ. Chúng ta có thể thiết lập bất kỳ biểu tượng nào bằng cách thêm một đặt tính OnItemIndicator đ
Hãy kiểm tra một số trong một trình tư duy trọng tài. Sau khi OnItemIndicator đổi trạng thái, chúng tôi kiểm tra xem nó có phải là một thẻ tay hay một抽屉 cho
highlightItemsFunc:Invoke({"GetType", curInst})
Các thẻ Lore và ThoughtBubble được kiểm tra sau khi kiểm tra các thẻ. Đối với các cửa, chúng tôi có 2 biểu tượng khác nhau: DoorCurrentlyClosed và
Quản lý cửa
The DoorManager LocalScript uses a Cửa tag and 1> Class.CollectionService1> to manage opening and closing doors. Door has front and back side triggers that we connect with touch and 4> 触摸结束4> events
Mỗi cánh cửa đều có một hệ thống trạng thái đơn giản, DoorState (Đóng, Mở, Mở, Đóng), với các thiết bị tweens được sử dụng cho các chuyển động. Chúng ta có thể bật hoặc tắt khả năng mở hoặc đóng cửa t
Chuyển động viên chính
The Class.LocalScript``UpdateImageAnimations(dT) playsAnimated images (texture atlas), which we used
Một đối tượng với một animator SurfaceGui có m
Hoạt Hình Quảng Cáo
The LocalSpaceAnimations LocalScript uses a LocalSpaceRotation tag to rotate most "cosmetic" objects with a given rotational velocity and delay around either the X, Y, or Z axis. We used
Quản lý đèn pha
The HeadlampManager LocalScript handle when users select the on-screen ImageButton to toggle the spotlight on top of their head on or tắt, fires comments to
Quản lý chỗ ngồi
Chúng tôi không muốn người chơi tự động ngồi khi gần mộ
Quản lý Drawer
Các DrawerManager tập tin sử dụng một nhãn Drawer2 và CollectionService để xử lý việc nhấp vào các hộp để mở hoặc đóng chúng, và chơi bất kỳ âm thanh tương ứng nào. Hoạt động mở và đóng bằng cách thiế
KillVolumes
Ở một vài khu vực của khu vực chơi chính, chẳng hạn như các ngọn lửa điện và nước gần với khu vực bắt đầu của con đ
PlayerMissionHồi sinh
Script PlayerMissionRespawn sử dụng một thẻ RespawnVolume và CollectionService để xử lý các kích thước mà khiến người chơi respawn khi chạm và
Khi xử lý GameEvents.PlayerRespawn , script có thể sử dụng RespawnPositions, nếu mission config cung cấp nó. Nếu không, nó sử dụ
Hệ thống giúp việc nhỏ
Quản lý Piano
Script PianoManager sử dụng một thẻ Piano và CollectionService để thêm 1> Class.ClickDetector|ClickDetectors1> và chơi một trong những âm thanh piano khi nhấp vào bàn phím.
Hỗ trợ lễ vật
Phòng chờ nơi người chơi đặt hộp chữ ký có một cỗ máy phức tạp thay đổi khi mỗi hộp chữ ký được đặt ở vị trí định nghĩa của nó. Ví
Quản lý phục hồi
Một số đối tượng có thể lấy được là quan trọng cho trải nghiệm trò chơi, chẳng hạn như các hải cẩu, và chúng tôi không muốn chúng bị mất nế
Cổng thông tin
Trong một vài nhiệm vụ, chúng tôi dịch chuyển người chơi ngắn trong một nhiệm vụ, chẳng hạn như respawning players người thoát khỏi một nền tảng quay, để đơn gi
P1.Touched:Connect(function(otherPart) utils.ProcessPortal(otherPart, P2) end)
ProcessPortal kiểm tra xem mộtPart khác là một con người, dịch chuyển người chơi qua một CFrame biến đổi, và gọi một cảnh nhỏ để ẩn chuyển động bằng cách sử dụng một sự kiện Teleport_Jump trong
Tập lệnh cấu hình
Chúng tôi có một số cấu hình, định nghĩa dữ liệu và các tập lệnh chức năng chung: DemoConfig . Định nghĩa các nhiệm vụ. Danh sách đếm cho trạng thái trò chơi, sự kiện cho trò chơi client-server. DemoGlobalSettings . Chúng tôi phát triển ở một nơi, nhưng phát hành (và test) ở những nơi khác. Script kiểm tra placeID và bật/tắt các cheat và chức năng debug. DemoUtilities . Các chức năng công cụ khác nhau. Điều trị biến. Cài đặt độ hiển thị, kết nối hoặc các thuộc tính khác. Kiểm tra điểm trong một hộp. Tìm kiếm các thố AudioUtilities . Một vài hàm để chơi âm thanh ngẫu nhiên từ một cài đặtdữ liệu. GrabUtil . Các chức năng trợ giúp cho việc lấy.