网格 101 教程第 4 章:使用网格可交互对象和物理来移动对象和触发动画
在本章中,你将使用风力发电场的模型。 你将了解如何使用网格交互对象和物理来抓取和释放刚体 (在这种情况下,风力涡轮机) 并使用可视脚本设置动画触发器。 你将通过限制风力涡轮机来结束工作,以便它们只能在指定区域内移动。
本章比你在第 3 章中所做的简单一点---没有脚本,并且网络是设置的,以便物理与会话中的所有虚拟形象看起来相同。
在开始第一个工作站之前,我们需要做一些事情。
重新配置层次结构
- 在 层次结构中,折叠 Chapter3 GameObject,然后展开 Chapter4 GameObject。
更改视图以显示第 4 章 Sphere 露台
在 Mesh 的体验中,参与者将从第 3 章的末尾顺利移动到第 4 章的开头,并正确定位以开始第 4 章学习活动。 但是,当你在第 3 章结束时退出“播放”模式时, 不会 在 “场景 ”窗口中自动看到第 4 章模型。 让我们设置该视图。
在 层次结构中,选择名为 4.1 的 GameObject - 抓取和释放。
将光标移动到“ 场景 ”窗口上,然后按键盘上的 F 键。
这会将视图集中在 4.1 -- 抓取和释放 对象上,但你很可能不完全处于所需的位置。
拖动、旋转和/或缩放视图,直到看到前面的第 4 章站,如下所示。
工作站 4.1:抓取和释放
本培训章节的参与者的目标是将风力涡轮机从桌面移动到海洋。 一旦在那里,涡轮机将捕捉海洋风,使他们的刀片转向并发电。
在 层次结构中,展开 4.1 -- 抓取和释放 GameObject。 请注意,它包含三个位于场景桌面上的风力涡轮机 GameObject。
让我们向 WindTurbine1 添加“抓取和释放”功能,以便参与者能够在网格中移动它。
在 “层次结构”中,选择“ WindTurbine1”。
在 检查器中,单击“ 添加组件 ”按钮,然后搜索并添加 网格可交互设置。
提示
本教程的第 3 章 对此组件的说明。
在同一组件中,单击“ 对象类型 ”下拉列表,然后选择“ 可管理”。
确保组件处于活动状态。
在 “刚体 ”组件中,根据需要展开 “约束” 选项,然后为“ 冻结旋转 ”设置选择“ X”、“Y”和 “Z”。
如果将涡轮机放置在不平整的表面上,这将防止涡轮机翻倒。
测试你的工作
保存项目,然后选择“Unity 编辑器播放”按钮。
请注意,每当进入“播放”模式时, “游戏 ”窗口中的起点是“第 3 章球形露台”。 对于本章,我们希望位于另一个 Sphere 露台---具有第 4 章功能。 幸运的是,有一种简单的方法可以到达那里。
向右旋转视图,直到看到“ 转到第 4 章 ”信息框。
转到信息框,然后选择“ 传送到第 4 章 ”按钮。
到达第 4 章“Sphere 露台”后,将光标移动到 WindTurbine1 上(其形状将发生变化),然后拖动涡轮机在场景中。
由于打开其 冻结旋转 约束,涡轮机将保持直立。
单击 Unity 编辑器“播放”按钮退出“播放”模式。
你不需要更新另外两个风力涡轮机,我们已经为你做了。
工作站:4.2 动画触发器
这里的想法是,当你将风力涡轮机拖过海洋时,“风”会导致涡轮机的叶片旋转。 实际发生的是,名为 “动画触发器” 的透明立方体位于海洋上,并充当触发器卷。 如果将风力涡轮机拖动到触发器卷中,则会触发 触发 Enter 事件,该事件将启动旋转的刀片动画。
在本章中,我们将向 GameObject 添加脚本,然后在脚本中启用动画。
在 层次结构中,展开 4.2 -- 动画触发器 GameObject,然后选择名为 动画触发器的子对象。
请注意,可以看到 动画触发器 GameObject 的 Box Collider 的绿色轮廓。
在 检查器中,导航到 Box 碰撞体 组件,然后选择“ 是触发器”。
提示
选择“ 是触发器”时,它将对象作为碰撞器组件附加到触发器卷。
- 在 层次结构中,导航到 第 4>章 4.1 - 抓取和释放 ,然后选择 WindTurbine1。
- 单击“ 添加组件 ”按钮,然后搜索并添加 “脚本计算机”。
我们希望嵌入脚本,但这通常意味着必须从头开始创建新的脚本图。 我们将采取快捷方式:暂时将 “源 ”选项设置为 “图形 ”。 我们将附加现有的脚本图,然后将其转换为嵌入的图。
单击 “图形 ”字段中的按钮,然后在 “SelectSceneGraph ”窗口中,选择“ SPWindTurbineScript”。
单击“ 转换 ”按钮。 请注意,这会删除 Graph 设置,并将 “源” 选项更改为 “嵌入”。
将旋转边栏选项卡动画添加到图形
花点时间检查脚本图。 它有两个组:上一组在用户将风力涡轮机拖入触发器卷时触发刀片旋转动画;当用户将涡轮机拖出卷时,下一组将停止动画。
该图 几乎 已根据我们想要的方式设置,但还有一个问题。 两 个动画处理器:“设置触发器” 节点设置为 “此 ...”
...但 换 而言之,此 (WindTurbine1) 没有要触发的动画。 让我们找到它。
在 层次结构中,展开 WindTurbine1 ,然后展开名为 WindTurbineBody 的子对象。 这会显示名为 Windmill_Turbine_001:Propellors10 的子对象。
选择“Windmill_Turbine_001:Propellors10”,然后在“检查器”中注意它包含名为WindTurbine1Propellers 的动画器控制器的动画器组件。
此 动画器 将提供我们的动画。
从层次结构中拖动Windmill_Turbine_001:Propellors10 GameObject,然后在脚本图中将其放在位于第一组的 Animator: Set Trigger 节点的第一个字段中。
再次从层次结构拖动 Windmill_Turbine_001:Propellors10 GameObject,然后在脚本图中将其放在位于第二组中的 Animator: Set Trigger 节点的第一个字段中。
脚本现已完成。
测试你的工作
保存项目,然后按 Unity 编辑器播放按钮。
如前所述,进入“播放”模式会将你的头像置于 第 3 章 Sphere 露台中。 向右旋转场景,然后走到“ 传送到第 4 章 ”按钮并按下它。
你现在应位于 第 4 章 Sphere 露台中。 拖动 WindTurbine1 (提醒:这是最远的一个在后面,红色刀片) 在海洋上。 请注意,涡轮机的刀片现在正在旋转。
将同一个涡轮机拖离海洋,然后将其放回桌面上。 请注意,涡轮机的刀片停止旋转。
观察完动画后,按 Unity 编辑器“播放”按钮退出“播放”模式。
你不必更新其他风力涡轮机---我们已经为你更新了。
工作站 4.3:约束主体
现在,参与者可以放置风力涡轮机的位置没有限制。 我们希望他们把涡轮机放在可以迎风的海洋中,但参与者可能会不小心把涡轮机掉在地板上。 我们希望避免这种情况,因此为了确保涡轮机只能降落在桌面上或海洋中,我们可以设置一个遏制场。 这基本上是一个透明的盒子---涡轮机将限制在盒子内部。
在 “层次结构”中,展开 “4.3 -- 约束正文 GameObject”,然后选择名为 “包含字段”的子对象。
在 检查器中,选择“ 添加组件 ”按钮,然后添加 “包含字段” 组件。
在 “包含字段 ”组件中,选择“ 受影响的正文 ”选项右侧的“+”按钮,然后在弹出菜单中选择“ 游戏对象名称” 条件。
在 “开头为 ”框中,键入“WindTurbine”。由于我们场景中的所有三个风力涡轮机都以“WindTurbine”开头,因此它们将全部限制在包含场。
测试你的工作
保存项目,然后按 Unity 编辑器播放按钮。
如前所述,进入“播放”模式会将你的头像置于 Chapter3 Sphere 露台中。 将场景向右旋转,然后走到 “传送到第 4 章 ”按钮并按下它。
你现在应位于 第 4 章 Sphere 露台中。 将其中一个风力涡轮机拖离桌面和海洋,并尝试将其放在地板上。 包含字段会阻止你执行此操作。
第 4 章:摘要
在本章中,你添加了网格功能,使体验中的参与者能够执行以下操作:
抓取和移动对象
当参与者将对象拖动到触发器卷时触发动画
仅在指定的特定区域中删除对象