类型总览 (Types Overview)

目录

[TOC]


交互的核心 (Core Interactions)

First Person Exploration Kit插件中,有几种类型的核心交互(Interactable)类型。

这些“核心交互”类型都源自“基础(Base)”类型,这些“基础类型”位于脚本文件FPEInteractableBaseScript.cs中

注意:
除了从FPEInteractableBaseScript脚本中,公开在Inspector面板上的变量外,下面的每种“可交互物”的类型都会在Inspector面板中公开一些其他的变量(选项)。
每个选项你都可以在Inspector面板上看到对应的提示,这些提示里解释每个选项的用途。
下面的每个类型在Prefabs/DemoPrefabs文件夹中至少有一个示例用的预制体(例如,demoSoup预制体是“可拾取道具(Pickup)”类型的对象的一个示例)。
在创建自己的“可交互物”的预制体时,可以参阅本插件自带的demoPrefabs文件夹、工具提示和以下的详细信息。


可交互物之间的优先级 (Relative Interaction Priority)

每种类型的“可交互物”都是根据下表进行处理的。这些处理会让玩家知道在每种情况下哪些交互是可用的。这些处理都会在FPEInteractionManagerScript脚本中进行,并与UI一起工作。

如果你想要修改这些行为,请参阅FPEInteractionManagerScript脚本中CORE_INTERACTION_LOGIC代码区域中的代码。如果要修改交互时UI的工作方式,请参阅FPEInteractionManagerScript脚本中CURSOR_AND_MOUSE代码区域的代码( 特别是updateControlHints()函数)。

InteractionPriority.jpg


交互的类型 (Interactable Types)

可拾取道具 (Pickups (FPEInteractablePickupScript.cs))

“可拾取道具”类型的对象允许玩家:拾取、查看、放回或丢弃这个对象。例如,玩家可以从架子上拿起一本书,并详细地查看这本书,然后再将这本书放回到架子上。玩家还可以将物体握在手中并随身携带,然后再将这个物品放置在游戏中的其他地方。

玩家查看一个“可拾取道具”时,有4种查看的方式:自由旋转、水平旋转、垂直旋转、不能旋转。


库存 (FPEInteractableInventoryItemScript.cs)

“库存物品(Inventory item)”的行为方式与“可拾取道具”相同。不同之处在于,玩家也可以“库存物品”存储在库存中。例如,玩家可以从桌子上拿起钥匙,并把随身携带、查看、或者放下钥匙,也可以把将钥匙放入库存中。

这些物品也可以作为其他类型的“可交互物”的交互需求。例如,我们可以让门需要钥匙才能打开,或者计算机可能需要密码卡才能访问,榨汁机需要苹果才能榨汁。

有关“库存物品”的更多信息,请阅读:Inventory Items documentation(库存物品)章节。

我们可以为“可拾取道具”(和“库存物品”)设置”查看“时的旋转类型(也就是说在查看某个对象时,只允许某些类型的旋转):

旋转的类型 旋转类型的中文翻译 说明
Free Rotation 自由旋转 对象可以向任何方向进行旋转 (请参见demoSoup预制体)
Horizontal Lock 水平方向锁定 对象只能水平旋转(请参见demoInstantPhoto预制体)
Vertical Lock 垂直方向锁定 对象只能垂直旋转(请参见demoPencil预制体)
Full Lock 不能旋转 对象根本无法旋转(请参见demoFlatPaper预制体)


当一个可交互对象是“可拾取道具”时,这个对象的Z+轴(场景编辑器中的蓝色箭头)的方向,是当对象在被查看时,对象将面向玩家的方向。

例如,示例场景中的demoFlatPaper预制体,这个预制体是一张纸,这张纸是面朝上的,Z+轴(蓝色箭头)指向它所在的桌子的上方。当玩家拿起这张纸,并对这张纸进行“查看”时,纸张的正面将面对摄影机(因为纸张的正面和蓝色箭头的方向一致)。对于平面对象(例如一张纸)和在查看时不能旋转的对象来说,这一点非常重要哦。


放回 (Put Back (FPEPutBackScript.cs))

“Put Back(放回)”并不是一个“可交互物”的类型,但是它与“可拾取道具(Pickup)”类型有关。

这个FPEPutBackScript脚本,用于指定一个区域,这个区域用于让玩家放置“可拾取道具(Pickup)”类型的对象。

在“可拾取道具”的脚本中,有一个flag可以自动生成放回的位置(请参阅demoSoup预制体)。如果你希望这些“可拾取道具”被放回时,放回的位置与它们的初始位置不同,你可以手动创建这些位置(请参阅示例场景中的demoManuallyPlacedPutbackObjectForCardboardBox 预制体)。这种灵活性使你能够创建更有趣的环境,让玩家来探索和交互。

注意:
如果你有一个对象的放回位置是自动生成的,并且这个对象使用的是Mesh Collider,那么可能会导致比较奇怪的比例和方向。
是否会发生这种奇怪的情况,具体取决于用于创建模型以及它们的导入方式,如果导入的Mesh Collider的几何方向与Unity的坐标系方向不同,或者在导入期间对象被缩放了,则会发生这种情况。
如果出现了这种情况,请相应地调整Mesh Collider,或者使用Box Collider(或其他的Unity碰撞体)。


激活 (Activate (FPEInteractableActivateScript.cs))

当玩家与“可激活物(Activate )”进行交互时,会执行一些特殊的操作。也就是说,当一个“可激活物”被激活时,会触发一些事件(Unity Event),你可以注册这些事件。

而且,“可激活物”还可以要求玩家必须持有什么库存物品,才能够成功激活。

例如,有个“可激活物”是一扇门,我们可以要求玩家必须有钥匙才能解锁(激活)这扇门。或者一个机器可能需要3个电池才能打开。


停靠点 (Dock (FPEInteractableDockScript.cs))

"停靠点(Dock )"类型的对象和“可激活物”类型的对象,非常的相似。但是“停靠点”对象允许,可以玩家“停靠”到这些对象上。

例如,“停靠点”类型可用于,让玩家坐在计算机前。或者用于让玩家站在街机前玩街机。

当玩家进入(激活)“停靠点”时,玩家的位置、焦点和视野将被限制。也就是说,在“停靠点”被激活时,它会将玩家移动到指定的位置,并且将玩家视线移动到焦点处,并且限制玩家的视野范围(视角)。

例如,如果玩家被固定(坐)在一张电脑椅上,他们的视野焦点可能是电脑的屏幕,他们的观看限制(视野范围)可能是+/-30度(正30度到负30度),这样可以让玩家的视线集中在电脑屏幕上。


可阅读物 (Journal (FPEInteractableJournalScript.cs))

当玩家与"可阅读物(Journals)"进行交互时,可以触发并打开一个UI元素,这个UI元素包含了一个或多个文档(页面),可以像访问页面一样访问这些文档。

例如,玩家可以打开包含只有一个页面的便笺,或者打开一本包含多个页面的书。


音频日志 (Audio Diary (FPEInteractableAudioDiaryScript.cs))

“音频日志(Audio Diary)”用于让玩家播放你希望的音频(以你希望的任何形式)。

要播放的可以是一个语音邮件,或者是一个角色的在叙述一个故事,甚至是一首歌。


静态道具 (Static (FPEInteractableStaticScript.cs))

"静态道具(Static)"是最基本的“可交互物”的类型。

“静态道具”只是在玩家的准心(屏幕中间的圆点)下面显示一些文本。

例如,我们把一个博物馆中的标语牌做成“静态道具”,当玩家瞄准(看向)这个标语牌时,我们可以显示一些文字,比如艺术家的名字。


被动的可交互物 (Passive Interactions)

在First Person Exploration Kit插件中,也有一些辅助类型或“被动”类型。它们是:


被动的音频日志 (Passive Audio Diaries (FPEPassiveAudioDiary.cs))

“被动的音频日志(Passive Audio Diaries)”用于添加旁白或其他的音频。它并不是“音频日志(Audio Diary)”的一部分。

例如,如果玩家拿起了一个瓶子,你可以使用“被动的音频日志”来播放葡萄酒制造商的描述,来解释这瓶葡萄酒的年份和葡萄酒的细节。


附加笔记 (Note Entries (FPEAttachedNote.cs))

“附加笔记(Attached Note)”可以附加到任何类型的“可交互物”上。

“附加笔记”的作用是,在玩家的库存中添加一张笔记。

例如,如果玩家与一本菜谱进行交互,在交互时,你可以将包含巧克力片饼干配方的便笺存储到玩家的库存中。或者,如果玩家在你游戏中的教程部分里,拿取了一份清单,你可以自动添加一个笔记到玩家的库存中,这个笔记用于显示这个清单物品的详细信息。


对象高亮显示 (Object Highlighting)

“基本(Base)”类型的可交互物中,包含了一些用于高亮显示的逻辑,还包含一个名为“Highlight On Mouse Over(在鼠标悬停时高亮显示)”的选项。如果这个选项为true,则与这个可交互物交互的时候,会将可交互物高亮显示。

BaseObjectHighlighting.jpg


如果你希望“高亮时更换对象的材质球(或更改材质的UV偏移),那么你可能会注意到“高亮显示”的功能似乎没有帮你更改材质。这是由于储存的材质没有被刷新而导致的。如果你要强制刷新高亮的材质,你只需调用forceHighlightMaterialUpdate()函数。这将对以前收集的所有材质进行硬刷新,并确保使用最新的纹理、UV偏移等来显示高亮。 下图中,显示了如何在“激活”事件中,简单轻松地调用此函数。因为每个“可交互物”都可以访问自己身上的基本函数,其中就包括forceHighlightMaterialUpdate()函数。

ForceRefreshHighlightMats.jpg


或者,你可以选中“可交互物”,并在Inspector面板中,取消勾选“Highlight On Mouse Over(在鼠标悬停时高亮显示)”的选项。

results matching ""

    No results matching ""