我们使用以下系统来支持 both the 基础游戏系统,以及任何目标的主要设计要求。
使用管理器
使用管理器 提供了一个简单的 API 来将抓取对象应用到某个东物品,例如将穿搭服装应用到人体模型。 主要功能为 UseManager.AddUse (
我们可以使用 UseManager.RemoveUse 来移除使用,这通常是在任务完成或特定项目使用后有用的。还可以通过添加或移除目标来使用 AddUseTargets 和 RemoveUseTargets 来添加或移除目标。
高光
当玩
此 LocalScript 使用了一个新的引擎功能 Highlight ,该精选能画出一个对象的轮��
HighlightItemsFunc用于与其他客户端系统通信。例如, EventManager用它来启用或禁用某些切场动画中的 Class.Highlight
知识和思路泡泡
Lore 和 ThoughtBubbles 是 2 个相似的系统。 Lore 使用一个 ScreenGui 作为一个屏
LoreMangerLocalScript 当单击或触摸时,它会使用 utils.RaycastAlongPointingDir 的帮助对象数发射射线投射,并使用
注意,我们使用 Camera.ViewportPointToRay 或 Camera.ScreenPointToRay 来构建射线,根据它是否从非触摸或触摸调用。坐标在某些不同的坐标系统中。对于鼠标,我们从
思考泡泡与其他类似的对象相似,例如使用射线投射检查网格或其父级是否有<a href="/resources/the-mystery-of-duvall-drive/reference/engine/thoughtubble">ThoughtBubble</a>标签。它还使用<a href://思考泡泡</a>属性为文本提供标签,还使用<a href://思考泡泡</a>属性指向位置在世界中放置用户界面的位置。思考����
特殊箱子
传统有几个特殊情况,其中一个是侵蚀的密封。 LoreManager 还处理特殊情况,显示禁用的门被锁定到玩家选择房间的密码之前显示小切场场景。
在项目上指示器
我们想在屏幕中央显示不同的图标,当玩家查看特定物品时。客户端脚本 在Itemindicator上射线投射 沿着相机 Class.CFrame.LookVector 并分析结果。根据结果,它将一个图像设置在 OnItemIndicator2 ScreenGui 中。
当没有与意息相关的项目被击中时,默认图标是一个小点。我们可以通过将 OnItemIndicator 属性添加到特定网格中,使用 onItemIndicatorImages 的名称,例如手、眼睛或门当前锁定,来设置任何标志。 属性仅在稀有情况下需要,并且大多数情
在优先级顺序中输入一些。在 OnItemIndicator 覆盖后,我们检查它是否可以状态取或是否为“手”图标的“抽屉”通过 either utils.CanGrabModel(model) 或 utils.GetTaggedObjectUpHierarchy("Drawer
highlightItemsFunc:Invoke({"GetType", curInst})
Lore和ThoughtBubble标签在稍后通过检查标签来检查。对于门,我们有 2 个不同的图标: DoorCurrentlyClosed 和 DoorAlwaysLocked 。DoorManager 为可以打开或关闭的门设置一个真或假的<
门户管理器
DoorManager 使用 LocalScript 标签和 Class.CollectionService 来管理打开和关闭门。门有前方和后方触发器,我们通过触摸和 1>触Ended1> 事件来打开和关闭门
每个门都有一个简单的状态系统,DoorState (关闭、打开、打开、关闭),使用闪光标记来启用或禁用门从外部系统打开或关闭的能力。我们可以通过调用DoorManager.EnableDoor启用或禁用门的能力从外部系统打开或关闭。
大师动画师
大师动画师1> LocalScript 播放动画图像(树
一个拥有动画 SurfaceGui 的对象,其主要目的是提供一个 Anim
本地空间动画
Class.LocalScript 使用一个 LocalScript 标签来旋转大多数“装扮”对象,其中大多数对象的旋转速度和延迟在 X、Y 或 Z 轴上都有所影
头灯管理器
头灯管理器 LocalScript 手lers用户选择屏幕上的ImageButton 来切换聚光灯在他们头上的头灯
座位管理器
我们不想玩家坐下时自动坐下,而是要求用户单击座椅附近才能坐下。 Seat
抽屉管理器
DrawerManager1> 脚本使用一个 Drawer2 标签和 CollectionService 来处理单击抽屉以打开或关闭它们,并播放任何相应的音频。打开和关闭操作由设置目标位置来实现。
杀死音量
在主游戏区的几个区域,例如电流火花和水域,玩家可以在进入音量设置Humanoid.Health为0时,当输入音量使用 KillVolume 标签。1>KillVolumes1>
玩家任务重生
PlayerMissionRespawn 脚本使用 RespawnVolume 标签和 Class.CollectionService 来处理触摸时玩家重生时。 我们将这些音量放置在腐败的房间,因为许多任务有间隙或移动平台,玩家
当处理 GameEvents.PlayerRespawn 时,脚本可以使用 RespawnPositions , 如果任务配置提供它。 如果不是,它会使用 TeleportPositions</
小型助手系统
钢琴管理器
PianoManager 脚本使用一个 Piano 标签和 CollectionService 来添加 1> Class.ClickDetector|ClickDetectors1> 并在键盘上单击时播放一个钢琴声。
仪式支持
玩家放置印章的休息室有一个复杂的机制,其中每个印章放置在其定义位置时都会发生变化。例如,根据放置的印章数量,特定事件播放灯和光束、更改特定对象的透明度等。 RitualSupport Class
恢复管理器
一些可以拾取的对象有助于游戏玩法,例如密封,我们不希望玩家丢失它们,如果有玩家将它们丢在某个地方。 如果对象有<a href="https://developer.microsoft.com/en-us/microsoft-edge/microsoft
传送门
在几个任务中,我们在任务中向玩家传送一小段距离内传送,例如 respawning 玩家 who fall off 旋转平台。要简化设置此类型的传送,我们在脚本中使用 ProcessPortal 作为协助函数,在 DemoTools 中使用。
P1.Touched:Connect(function(otherPart) utils.ProcessPortal(otherPart, P2) end)
处理器门户 手段检查其他部分是否是人类,传送玩家通过 CFrame 坐标变更,并调用小 cutscene 隐藏过渡使用 Teleport_Jump 事件在 0> EventManager0> 中。
配置脚本
我们有几个配置、数据定义和常用功能脚本: DemoConfig 。定义任务。游戏状态的数列和客户端-服务器通信的事件。 全球设置演示 。我们在一个场景开发,但在其他地方发布(并游戏测试)。脚本检查 placeID 并启用/禁用各种漏洞和调试功能。 DemoUtilities 。各种实用工具。 处理变形。 设置隐藏、锚定或其他属性。 检查在方块子中的点。 查找对象在层级中通过“dotted”名称。 管理TempStorage(可以用于暂时移动模型“某处远处”并在后台恢复)。 单击探测器帮助。 拖动支协助。 AudioUtilities 。几个函数可以从设置合中播放重要的随机声音。 GrabUtil . 帮助函数用于抓取。