网格 101 教程第 4 章:使用网格可交互对象和物理来移动对象和触发动画



在本章中,你将使用风力发电场的模型。 你将了解如何使用网格交互对象和物理来抓取和释放刚体 (在这种情况下,风力涡轮机) 并使用可视脚本设置动画触发器。 你将通过限制风力涡轮机来结束工作,以便它们只能在指定区域内移动。

本章比你在第 3 章中所做的简单一点---没有脚本,并且网络是设置的,以便物理与会话中的所有虚拟形象看起来相同。

在开始第一个工作站之前,我们需要做一些事情。

重新配置层次结构

  • 层次结构中,折叠 Chapter3 GameObject,然后展开 Chapter4 GameObject。

计算机说明的屏幕截图

更改视图以显示第 4 章 Sphere 露台

在 Mesh 的体验中,参与者将从第 3 章的末尾顺利移动到第 4 章的开头,并正确定位以开始第 4 章学习活动。 但是,当你在第 3 章结束时退出“播放”模式时, 不会“场景 ”窗口中自动看到第 4 章模型。 让我们设置该视图。

  1. 层次结构中,选择名为 4.1 的 GameObject - 抓取和释放

    计算机说明的屏幕截图

  2. 将光标移动到“ 场景 ”窗口上,然后按键盘上的 F 键。

    这会将视图集中在 4.1 -- 抓取和释放 对象上,但你很可能不完全处于所需的位置。

  3. 拖动、旋转和/或缩放视图,直到看到前面的第 4 章站,如下所示。

    自动生成的计算机生成的山地模型的图像 说明

工作站 4.1:抓取和释放

本培训章节的参与者的目标是将风力涡轮机从桌面移动到海洋。 一旦在那里,涡轮机将捕捉海洋风,使他们的刀片转向并发电。

  1. 层次结构中,展开 4.1 -- 抓取和释放 GameObject。 请注意,它包含三个位于场景桌面上的风力涡轮机 GameObject。

    计算机说明的屏幕截图

    让我们向 WindTurbine1 添加“抓取和释放”功能,以便参与者能够在网格中移动它。

  2. “层次结构”中,选择“ WindTurbine1”。

  3. 检查器中,单击“ 添加组件 ”按钮,然后搜索并添加 网格可交互设置

    屏幕截图

    提示

    本教程的第 3 章 对此组件的说明。

  4. 在同一组件中,单击“ 对象类型 ”下拉列表,然后选择“ 可管理”。

    屏幕截图

  5. 确保组件处于活动状态。

  6. “刚体 ”组件中,根据需要展开 “约束” 选项,然后为“ 冻结旋转 ”设置选择“ X”、“Y”和 “Z”。

    计算机的屏幕截图 描述自动生成

如果将涡轮机放置在不平整的表面上,这将防止涡轮机翻倒。

测试你的工作

  1. 保存项目,然后选择“Unity 编辑器播放”按钮。

    请注意,每当进入“播放”模式时, “游戏 ”窗口中的起点是“第 3 章球形露台”。 对于本章,我们希望位于另一个 Sphere 露台---具有第 4 章功能。 幸运的是,有一种简单的方法可以到达那里。

  2. 向右旋转视图,直到看到“ 转到第 4 章 ”信息框。

    计算机说明的屏幕截图

  3. 转到信息框,然后选择“ 传送到第 4 章 ”按钮。

    计算机的屏幕截图 描述自动生成

  4. 到达第 4 章“Sphere 露台”后,将光标移动到 WindTurbine1 上(其形状将发生变化),然后拖动涡轮机在场景中。

    由于打开其 冻结旋转 约束,涡轮机将保持直立。

    图片

  5. 单击 Unity 编辑器“播放”按钮退出“播放”模式。

你不需要更新另外两个风力涡轮机,我们已经为你做了。

工作站:4.2 动画触发器

这里的想法是,当你将风力涡轮机拖过海洋时,“风”会导致涡轮机的叶片旋转。 实际发生的是,名为 “动画触发器” 的透明立方体位于海洋上,并充当触发器卷。 如果将风力涡轮机拖动到触发器卷中,则会触发 触发 Enter 事件,该事件将启动旋转的刀片动画。

在本章中,我们将向 GameObject 添加脚本,然后在脚本中启用动画。

  1. 层次结构中,展开 4.2 -- 动画触发器 GameObject,然后选择名为 动画触发器的子对象。

    屏幕截图

    请注意,可以看到 动画触发器 GameObject 的 Box Collider 的绿色轮廓。

    屏幕截图

  2. 检查器中,导航到 Box 碰撞体 组件,然后选择“ 是触发器”。

    屏幕截图

提示

选择“ 是触发器”时,它将对象作为碰撞器组件附加到触发器卷。

  1. 层次结构中,导航到 第 4>章 4.1 - 抓取和释放 ,然后选择 WindTurbine1
  2. 单击“ 添加组件 ”按钮,然后搜索并添加 “脚本计算机”。

我们希望嵌入脚本,但这通常意味着必须从头开始创建新的脚本图。 我们将采取快捷方式:暂时将 “源 ”选项设置为 “图形 ”。 我们将附加现有的脚本图,然后将其转换为嵌入的图。

  1. 单击 “图形 ”字段中的按钮,然后在 “SelectSceneGraph ”窗口中,选择“ SPWindTurbineScript”。

    屏幕截图

  2. 单击“ 转换 ”按钮。 请注意,这会删除 Graph 设置,并将 “源” 选项更改为 “嵌入”。

将旋转边栏选项卡动画添加到图形

花点时间检查脚本图。 它有两个组:上一组在用户将风力涡轮机拖入触发器卷时触发刀片旋转动画;当用户将涡轮机拖出卷时,下一组将停止动画。

屏幕截图

该图 几乎 已根据我们想要的方式设置,但还有一个问题。 两 个动画处理器:“设置触发器” 节点设置为 “此 ...”

屏幕截图

...但 而言之,此 (WindTurbine1) 没有要触发的动画。 让我们找到它。

  1. 层次结构中,展开 WindTurbine1 ,然后展开名为 WindTurbineBody 的子对象。 这会显示名为 Windmill_Turbine_001:Propellors10 的子对象。

    屏幕截图

  2. 选择“Windmill_Turbine_001:Propellors10”,然后在“检查器”中注意它包含名为WindTurbine1Propellers 的动画器控制器的动画器组件。

    屏幕截图

    动画器 将提供我们的动画。

  3. 层次结构中拖动Windmill_Turbine_001:Propellors10 GameObject,然后在脚本图中将其放在位于第一组的 Animator: Set Trigger 节点的第一个字段中。

    屏幕截图

  4. 再次从层次结构拖动 Windmill_Turbine_001:Propellors10 GameObject,然后在脚本图中将其放在位于第二组中的 Animator: Set Trigger 节点的第一个字段中。

脚本现已完成。

测试你的工作

  1. 保存项目,然后按 Unity 编辑器播放按钮。

  2. 如前所述,进入“播放”模式会将你的头像置于 第 3 章 Sphere 露台中。 向右旋转场景,然后走到“ 传送到第 4 章 ”按钮并按下它。

    计算机的屏幕截图 描述自动生成

  3. 你现在应位于 第 4 章 Sphere 露台中。 拖动 WindTurbine1 (提醒:这是最远的一个在后面,红色刀片) 在海洋上。 请注意,涡轮机的刀片现在正在旋转。

    包含屏幕截图、3D 建模、电脑游戏、视频游戏软件的图片 说明自动生成

  4. 将同一个涡轮机拖离海洋,然后将其放回桌面上。 请注意,涡轮机的刀片停止旋转。

  5. 观察完动画后,按 Unity 编辑器“播放”按钮退出“播放”模式。

你不必更新其他风力涡轮机---我们已经为你更新了。

工作站 4.3:约束主体

现在,参与者可以放置风力涡轮机的位置没有限制。 我们希望他们把涡轮机放在可以迎风的海洋中,但参与者可能会不小心把涡轮机掉在地板上。 我们希望避免这种情况,因此为了确保涡轮机只能降落在桌面上或海洋中,我们可以设置一个遏制场。 这基本上是一个透明的盒子---涡轮机将限制在盒子内部。

  1. “层次结构”中,展开 “4.3 -- 约束正文 GameObject”,然后选择名为 “包含字段”的子对象。

    计算机的屏幕截图 描述自动生成

  2. 检查器中,选择“ 添加组件 ”按钮,然后添加 “包含字段” 组件。

    计算机的屏幕截图 描述自动生成

  3. “包含字段 ”组件中,选择“ 受影响的正文 ”选项右侧的“+”按钮,然后在弹出菜单中选择“ 游戏对象名称” 条件。

    计算机的屏幕截图 描述自动生成

  4. “开头为 ”框中,键入“WindTurbine”。由于我们场景中的所有三个风力涡轮机都以“WindTurbine”开头,因此它们将全部限制在包含场。

    计算机说明的屏幕截图

测试你的工作

  1. 保存项目,然后按 Unity 编辑器播放按钮。

  2. 如前所述,进入“播放”模式会将你的头像置于 Chapter3 Sphere 露台中。 将场景向右旋转,然后走到 “传送到第 4 章 ”按钮并按下它。

    计算机的屏幕截图 描述自动生成

  3. 你现在应位于 第 4 章 Sphere 露台中。 将其中一个风力涡轮机拖离桌面和海洋,并尝试将其放在地板上。 包含字段会阻止你执行此操作。

第 4 章:摘要

在本章中,你添加了网格功能,使体验中的参与者能够执行以下操作:

  • 抓取和移动对象

  • 当参与者将对象拖动到触发器卷时触发动画

  • 仅在指定的特定区域中删除对象

后续步骤

第 5 章:使环境可用于测试