对于没有编程背景的设计师或艺术家来说,编写代码可能是一个难以逾越的障碍。PlayMaker的出现,为这些创意工作者提供了一个无需编码即可实现复杂游戏逻辑的解决方案。
PlayMaker是一个基于Unity的可视化脚本工具,它允许开发者通过拖放的方式创建游戏逻辑。使用PlayMaker,开发者可以创建AI行为、动画控制、UI交互等,而无需编写任何代码。
1. 基本概念
从本质上讲,PlayMaker 是一种通过有限状态机 (FSM) 操纵 Unity 的工具,FSM 是一种将复杂行为分解为各个状态的模型。
由于这似乎很抽象且难以理解,让我们从一个具体的例子开始。
1.1 什么是 FSM?
例如,家用电器上的电源按钮:即使执行相同的“按下按钮”操作,家用电器的响应(无论是打开还是关闭)也会根据情况而有所不同。
如果按下按钮的“事件”发生在 ON 的“状态”中,它将“转换”到 OFF 的“状态”;相反,如果按下按钮的“事件”发生在 OFF 的“状态”中,它将“转换”到 ON 的“状态”。
考虑到这个例子,我们可以将 FSM 视为一个模型,它基于几个(有限)状态、事件和转换的组合来描述复杂行为。
让我们看看实际 PlayMaker FSM 的元素
- START(事件开始)
激活 FSM 时(播放 Unity 场景时),将发送一个开始事件,该事件从 Playmaker 编辑器的最开头就开始存在,并且是激活 FSM 时发生的事件。 - 状态
一次只能有一个状态处于活动状态;活动状态执行操作并接收事件。 - Transition 事件
事件触发到另一个状态的转换,该转换可以从 Unity 发送(碰撞、触发器、鼠标输入等)或通过操作(距离检查、超时、游戏逻辑)发送。 - 转换
过渡就像 PlayMaker 编辑器中的箭头:可以通过从一个 Transition Event 拖放到下一个 State 来轻松创建它们。 - 全局转换
无论当前处于活动状态如何,都可以随时触发 Global Transitions。
这是实际的 PlayMaker 编辑器屏幕。
1.2 三个基本概念
PlayMaker 的基本概念是“State”、“Event”和“Transition”的组合。
1.2.1 State(状态)
在下图中,Move、Idle 和 FallDown 是 State,在任何给定时间只有一个 State 处于活动状态。
PlayMaker 提供了数十个 Actions,可以组合这些 Action 来创建各种逻辑。
每个 State 都有一个 Action,当 State 变为活动状态时执行该 Action。
操作从上到下按顺序执行,因此请注意顺序。
“Move” 状态具有 “Move Object” 操作和 “Send Event” 操作。
1.2.2 Event(事件)
正如我们已经看到的,下图中的 “stop” 是一个 Event,它会触发 state transition。
事件包括从 Unity 接收的事件(例如碰撞、触发器和鼠标输入)以及由活动状态的操作(例如距离检查、超时和游戏逻辑)触发的事件。
前者很容易理解:事件由鼠标输入或碰撞器点击触发,而后者可以是 State 操作的一个示例,该操作持续比较与具有一定距离的摄像机的距离,并在与摄像机的距离小于特定数字时触发事件。
首先由 Start Event 激活的 State 称为 Start State。
1.2.3 Transition(过渡)
过渡是 PlayMaker 编辑器中的箭头,可以通过从一个 Transition Event 拖放到下一个 Transition Event 来轻松创建。
过渡没有复杂的设置。
但是,基本上,转换是从特定 State 到特定 State 的,但可以通过 Event 指示从任何 State 到特定 State 的转换,而无需指定转换的来源 State,这称为 Global Transition。
在下面的示例中,事件 “TRIGGER ENTER” 会导致过渡到 “FallDown”,无论它是 “Move” 还是 “Idle”。
1.3 变量
除了以上三个基本概念外,还有应该添加的变量的概念。
变量就像一个有名称的盒子,你可以在其中放置一个值,通过将变量指定为操作的参数,你可以创建一个动态机制。
Time 不是输入 “1”,而是设置一个名为 “fadeInTime” 的变量。
2. PlayMaker 编辑器的位置
在左上角的菜单中,单击 PlayMaker > PlayMaker 编辑器。
将显示 PlayMaker 编辑器和欢迎使用 PlayMaker 窗口。
取消选中“欢迎使用 PlayMaker”中的“启动时显示”复选框,然后单击 O 以关闭“欢迎使用 PlayMaker”。
将 PlayMaker 编辑器选项卡拖放到右下角。
这是建议的位置,因此请将 PlayMaker 编辑器选项卡拖放到您方便的位置。
3. PlayMaker 基本操作
3.1 添加 FSM
让我们将 PlayMakerFSM 添加到 Hierarchy 窗口中的对象(以下称为 Hierarchy)。
右键单击层次结构以打开菜单。
单击 3D Object > Cube 放置立方体。
选择层次结构中的 Cube 后,右键单击 PlayMaker 编辑器。
然后单击 Add FSM(添加 FSM)。
PlayMakerFSM 现已添加到 Cube 中。
或者,您也可以通过在 PlayMaker 编辑器上按 Ctrl + 左键单击 (Windows) / command + 单击 (macOS) 来添加 PlayMakerFSM。
添加 PlayMakerFSM 后,PlayMaker 图标将添加到层次结构中立方体的右侧,并且 PlayMakerFSM 组件将添加到检查器中。
我们还将向您展示如何从检查器添加 PlayMakerFSM。
在层次结构中选择 Cube,然后在 Cube 检查器中单击添加组件,在搜索表单中输入“Play”,PlayMakerFSM 将出现在搜索结果中。
单击 PlayMakerFSM。
3.2 删除 FSM
右键单击 PlayMaker 编辑器,然后单击删除 FSM 组件以从对象中删除 PlayMakerFSM。
3.3 重命名 FSM
您可以通过选择 FSM 选项卡,从 Rename 表单中更改 FSM 的名称
更改 FSM 名称可以更轻松地管理多个 FSM。
3.4 添加状态
您可以通过右键单击 PlayMaker 编辑器并选择添加状态来添加新状态,也可以通过在 PlayMaker 编辑器上按 Ctrl + 左键单击 (Windows) / 命令 + 单击 (macOS) 来添加 PlayMakerFSM。
3.5 删除 State
您可以通过右键单击要删除的 State 并选择 Delete States 来删除状态。
您还可以通过选择状态并单击 Delete 来删除该状态。
3.6 重命名 State
选择一个 State 并更改 State 选项卡上的名称输入表单。
3.7 复制/粘贴状态
您可以通过选择状态,右键单击并选择 Copy State 来复制状态。
您还可以选择一个状态,然后按 Ctrl + C (Windows) / Commnd + C (macOS)。
右键单击 PlayMaker 编辑器,然后选择 Paste State 以粘贴复制的 State。
您还可以选择一个状态,然后使用 Ctrl + V (Windows) / Commnd + V (macOS) 粘贴它。
用于复制和粘贴 State 的快捷键很有用,因此请牢记它们。
操作系统 | 复制 | 粘贴 |
---|---|---|
WIndows | Ctrl + C | Ctrl + V |
macOS | Command + C | Command + V |
如果您尝试复制并粘贴设置为 Start State 的 State(见下文),则会出现一条消息,询问您是否要将粘贴的 State 设为 Start State。
如果您想使其成为 Start State(开始状态),请选择 “Yes”(是),如果您不想使其成为 Start State(开始状态),请选择“No”(否)。
3.8 添加操作
选择要添加 Action 的 State,然后单击 PlayMaker 编辑器右下角的 Action 浏览器,或双击 State 空白区域。
此时将显示 Action Browser。
例如,如果您想要向立方体添加一个“旋转”动作,在搜索表单中输入“旋转”,然后双击旋转或拖放旋转到一个状态,或者点击右下角的添加动作到状态。
在 Action 浏览器中搜索 Rotate
双击旋转或拖放旋转到状态以添加旋转到状态
在 PlayMakerFSM 中的 Action 仍处于选中状态的情况下,从 Action Browser 添加下一个 Action,它将添加到所选 Action 的顶部。
如果要从顶部开始按顺序添加操作(例如,如果要在 Rotate 旁边执行 Set Scale)
单击 Rotate (旋转) 下方的空间以取消选择 Rotate (旋转)。
未选择 Rotate (旋转) 后,添加 Action (操作) 接下来要执行。
现在,这些操作按从顶部开始的 Rotate (旋转) → Set Scale (设置缩放) 的顺序列出。
操作从上到下按顺序执行,因此请注意顺序。
3.9 更改操作顺序
要更改操作的顺序,请右键单击操作并将操作移动到顶部以将其移动到顶部,或将操作移动到底部以将其移动到底部。
您还可以通过拖动操作或按 Ctrl + ↑ 或 ↓ 向上或向下移动操作来将操作移动到任何位置。
3.10 删除操作
如果不再需要某个操作,请右键单击它,然后选择 Remove Action 将其删除。
或者,选择 操作 并按 Delete(Windows) / Commnad + Delete(macOS)。
3.11 停用操作
取消选中 Action name (操作名称) 左侧的复选框,以防止它在场景播放期间正常工作。
3.12 复制/粘贴操作
右键单击一个动作,然后选择 Copy Selected Actions 以复制该动作。
或者,也可以使用 Ctrl + C (Windows) / Commnd + C (macOS) 进行复制。
右键单击并选择 Paste Actions 以粘贴操作。
您也可以使用 Ctrl + V (Windows) / Commnd + V (macOS) 进行粘贴。
4. 添加Transition(过渡)
右键单击 State 并选择 Add Transition 以选择要添加的 Transition。
让我们选择 Add Transition > FINISHED。
FINISHED 是当 State 中的所有 Action 都完成时触发的事件。
4.1 删除过渡
如果您有不需要的 Transition,可以通过右键单击 Transition Event 并选择 Delete Transition 来删除它。
4.2 如何连接过渡
您可以通过从 Transition Event 拖动到另一个 State 来连接 Transition。
4.3 删除过渡目标
右键单击 Transition Event,然后选择 Clear Transition Target 将其删除。
4.4 错误指示
PlayMaker 显示一个红色的 !
单击 PlayMaker 编辑器左下角的错误数量将弹出错误检查屏幕。
Error Check (错误检查) 屏幕显示错误的详细信息。
单击错误详细信息会将 PlayMaker 编辑器屏幕切换到错误位置。
4.5 在场景播放期间检查 FSM
在场景播放期间查看 PlayMaker 编辑器。
正在执行的 State 和 Action 将显示为绿色。
因此,您可以检查正在执行的流程。
4.6 FSM 固定显示器
当您在层次结构中选择一个对象时,PlayMaker 编辑器还会根据对象切换内容。
要停止切换,请单击 PlayMakerFSM 顶部的 Lock。
在场景播放期间,当您在观看 PlayMakerFSM 移动时选择要移动或以其他方式操作层次结构中的另一个对象时,这非常有用。
4.7 更改 Start 状态
Start State (开始状态) 确定要执行的第一个状态。
在下图中,过渡从 START 延伸到 State1。在这种情况下,State1 是播放场景时要执行的第一个状态。
要稍后更改 Start State(开始状态),请右键单击要首先执行的 State(状态),然后选择 Set as Start state(设置为开始状态)。
您已将 State2 切换为 Start State。
5. 以 PlayMaker Lab 为参考创建 PlayMakerFSM
5.1 介绍
我们准备了一个 PlayMakerFSM 示例,让我们看看它实际上是如何结合 State、Action 和 Transition 的组合来工作的。
下载示例:PlayMaker Demo。
将 PlayMaker_Lab.unitypackage 导入到 Unity 项目中。
5.2 让我们连接 Transition
双击项目 Assets > STYLY PlayMaker Lab > Scenes 中的 STYLY PlayMaker Lab 01.Scene 打开场景。
现在,具有黄色 Sphere 和红色 Cube 的场景将显示在 Scene 视图中。
从层次结构中选择 Cube_Sample。
在红色 Cube 的 PlayMakerFSM 中,有 9 个 State,可以通过箭头连接来创建 Transition。
每个 State 都有一个 Action。
A 组状态具有 Action 集作为条件。
状态名称 | Action | 描述 |
---|---|---|
Touch | Trigger Event | 在触摸某些内容时触发事件。 |
Time wait | Wait | 等待单位:秒 |
Press enter key | Get Key Down | 按 Enter(光标位于 Game 视图中) |
Distance | Get Distance Float Compare | 和 Cube 之间的距离小于/大于/等于 |
B 中的 State 组设置为生成的 Action。
状态名称 | Action | 描述 |
---|---|---|
Change Color | Set Material | 更改材质(在本例中,它将是蓝色的) |
Rotate | Rotate | 旋转 |
Fall down | Set Property (isKinematic/isTrigger) | 添加碰撞检测和重力 |
Particle effects | Activate Game Object | 激活对象(这次我们从非活动状态激活粒子效果)。 |
Create Capsule | Create Object Set Parent | 在场景中创建一个 Capsule 对象,并使其成为 Sphere 的子对象。 |
让我们尝试通过连接 Transition from A to B 来查看它如何变化。
例如,将 First state → Touch → Particle 效果连接起来。
让我们回放一下。
- 球体接触立方体
- 生成粒子效果。
尝试通过自行更改 Actions 的组合来预测它的行为方式,并将 Transitions 连接在一起。
PlayMakerFSM 是一个非常强大的工具,可以扩大表达范围。
5.3 从头开始创建 PlayMakerFSM(什么是触发器)
双击 Assets > STYLY PlayMaker Lab > Scenes > STYLY PlayMaker Lab 02.Scene 打开场景。
具有黄色 Sphere 和两个红色 Cube 的场景将显示在 Scene 视图中。
播放场景。
黄色球体穿过两个立方体,但当它穿过“在写着 Lab 的蓝色立方体之上”的红色立方体时,会产生一个粒子;但是,当它穿过“位于显示 Copy 的蓝色 Cube 顶部”的红色 Cube 时,不会生成 Particles。
让我们创建一个 PlayMakerFSM,即使穿过“在显示 Copy 的蓝色 Cube 之上”的红色立方体,它也会生成一个粒子。
在层次结构中选择 Cube_Practice。
通过右键单击 PlayMaker 编辑器并选择添加 FSM 来添加 PlayMakerFSM。
复制层次结构中的子对象 Particle System of Cube_Sample。
将复制的 Particle System(粒子系统)拖放到 Cube_Practice 以创建 Cube_Practice(父)-Particle System (child)(粒子系统(子))关系。
然后移动 Particle System (粒子系统) 的位置,使其与 Cube_Practice 重叠。
将 State1 的名称更改为 Touch。
添加一个 Action,当有物体接触 Touch 时将触发该操作。
在 Action Browser 中找到 Trigger Event 并添加它。
将参数 Trigger 设置为 On Trigger Enter。
On Trigger Enter 可以在特定对象接触到“触发器(对象)”(以下简称“触发器对象”)的碰撞器区域时触发事件。
On Trigger Enter 功能的条件
- Collider 同时提供给特定对象和触发器对象。
- 选中将要作为触发器的对象上的 Collider > Is Trigger
- 选中 Is Trigger 后,不会发生碰撞。
- 必须在特定对象或触发对象上设置 Rigidbody 组件
- 取消选中 Use Gravity 以禁用重力
- 选中 Is Kinematic 以禁用物理效果
以下是 “Check Is Trigger for Collider” 的说明。
首先,我们来谈谈碰撞器。
碰撞体是在命中或触发对象时附加到对象的形状,在场景中由绿线表示。
当碰撞体相互接触时,将触发命中检测和触发器。
例如,Cube Inspector 有一个 Box Collider。
碰撞器具有 Is Trigger。
Is Trigger (是触发器) 是 Collider (碰撞器) 组件的设置之一,对于区分命中和触发器非常重要。
选中 Is Trigger 的对象无法进行物理接触。
如果未为被击中的一侧的碰撞体选中 Is Trigger,它将与碰撞体接触。
如果选中了碰撞 Cllider 的 Is Trigger,则它不会接触碰撞器。
Is Trigger of Collider 组件摘要
Is Trigger | 行为 |
---|---|
Unchecked | 碰撞接触 |
Checked | 不碰撞接触 |
这一次,为了实现“我想在黄色球体穿过立方体时生成粒子”,请选中立方体(被触摸的那个)上的 Is Trigger (Collider) 复选框。
下面解释了“Rigidbody 组件必须设置为特定对象或触发器对象。
黄色 Sphere 没有 Rigidbody 组件,因此在这种情况下,Cube 必须具有 Rigidbody 组件。
然后,不要选中 Use Gravity 复选框,而是选中 Is Kinematic 复选框。
如果选中 Use Gravity,则将激活 Gravity 效果。
选中 Is Kinematic 将禁用物理效果。
最后,再次总结一下,
- On Trigger Enter 可以在特定对象接触触发器对象时触发事件(Is Trigger 选中)。
- 选中触发器对象的 Collider 中的 Is Trigger。
- 选中 Is Trigger 后,不会发生碰撞。
- 选中触发器对象的 Collider 中的 Is Trigger。
- 必须在特定对象或触发器对象上设置 Rigidbody 组件。
- 取消选中 Use Gravity 以禁用重力
- 选中 Is Kinematic 以禁用物理效果
返回到 PlayMaker 编辑器。
将 Trigger Event (触发事件) 设置为以下值
参数名称 | 参数说明 | 参数值 |
---|---|---|
Game Object | 将应用 Action 的对象。 | Use Owner (默认设置) |
Trigger | 触发器事件的类型 | On Trigger Enter (默认设置) |
Collider Tag | Tag:如果使用 STYLY, 应设置为“Untagged”。 | (默认设置) 或者 Untagged |
Send Event | 操作完成后要发送的事件。 | Send to Next(我们将在下一节中解释如何设置) |
Store Collider | 碰撞器变量 | None (默认设置) |
设置 Send Event。
点击 ▼ 图标,然后选择 自定义事件>发送到下一个。
消息“此状态或任何全局转换未使用事件![单击以将过渡添加到状态]“将显示在 Send Event 下。
它的意思是 “请添加到 State 的过渡。
双击消息以添加过渡。
在 Cube_Practice Inspector 中,选中 Collider > Is Trigger(触发碰撞器)。
单击 Inspector 底部的 Add Componet 以添加刚体。
取消选中添加的 Rigidbosy 的 Use Gravity,然后选中 Is Kinematic。
返回 PlayMaker 编辑器,添加一个 State,然后将 Transition from Touch send 连接到添加的 State 旁边。
现在,您已经完成了此操作,请播放该场景并检查黄色 Sphere 在接触红色 Cube 时是否从 Touch 过渡到 State1。
接下来,让我们添加一个 Action 来生成 Particle。
将 State1 重命名为 Active Particle。
添加 Active Game Object 并等待 Active Particle。
按如下方式设置 Active Game Object 的 Action。
参数名称 | 参数说明 | 参数值 |
---|---|---|
Game Object | 将应用 Action 的对象。 | 将子对象 Particle System (1) 拖放到此处(见下文)。 |
Active | 选中可将其激活;取消选中以使其处于非活动状态。 | Checked |
Recursive | 选中后,也会反映在 Game Object 中设置的对象的子项中。 | Checked |
Reset On Exit | 反转 Action 结束时的操作。 | Checked (使其在 Action 结束时再次处于非活动状态。) |
Every Frame | 每帧重复此操作。 | Uncheck |
单击 Active Game Object 参数的 ▼ 图标,然后选择 Specify Game Object。
游戏对象参数有两种类型
- 使用 OAwner
- 将 OAwner 用于 PlayMakerFSM 的对象。
- 指定游戏对象
- 您可以指定任何对象,甚至是预制件对象。
要激活 Particle System(1)(Cube_Practice 的子对象),请从层次结构中拖放 Particle System (1),并将其设置为 Specify Game Object (Specify Game Object) 下的形式。
当您拥有以下设置时,您就完成了!
现在我们将解释如何激活和停用对象。
检查器中对象的名称旁边有一个复选标记。
如果选中此选项,则对象处于活动状态。
如果将其停用(取消选中),则对象在 Scene 视图中将不可见,并且其功能不会影响场景。
在层次中,字母将淡化,只有 Gizmo 在 Scene 视图中可见。
例如,通过使用 Active/Inactive 设置,您可以在事件发生时使用 Particle。
接下来,我们设置 Wait 参数。
参数名称 | 参数说明 | 参数值 |
---|---|---|
Time | 等待时间 | 2 |
Finish Event | 操作完成后要发送的事件的目的地。 | Send to Next(如何设置,将在下一节中说明) |
Real Time | 如果您不想受 TimeScale 影响,请选中此框。 | 如果您不想受到 Real TimeScale 的影响,请取消选中此框。 |
关于 TimeScale,请参阅以下文档:Time.timeScale
点击 Finish Event 参数中的 ▼ 图标,然后选择 send to next。
您还将收到一条消息,指出没有 Transition。
这一次,右键单击 Active Particle,然后选择 Add Transition > send to next 来设置过渡。
现在让我们按一次 Play 按钮来检查操作。
Cube_Practice 仅在黄色球体与粒子碰撞时生成粒子一次,但每次黄色球体与粒子碰撞时Cube_Sample生成粒子。
请考虑最后一个设置点并自己制作。
提示是连接 Transition of Active Particle 的位置。
如果您不知道,请查看 Cube_Sample 的 PlayMakerFSM。
5.4 "6个样例"的描述
双击项目 Assets > STYLY PlayMaker Lab > Scenes > STYLY PlayMaker Lab 03.Scene 打开场景。
有 6 个 PlayMakerFSM 示例可用。
以下是每个 Action 的说明。
样例名称 | Action |
---|---|
01_Sample | Cube 旋转 |
02_Sample | Sphere 每秒停用一次 |
03_Sample | 随机更改颜色 |
04_Sample | 创建对象 |
05_Sample | 当 Cube 与 Sphere 碰撞时,文本将从 SKY 变为 SEA 再到 SUN。 |
06_Sample | 根据行驶距离,使用四种算术运算来更改比例。 |
5.4.1 旋转
这是在 01_Sample 中旋转 Cube 的 Action。
在层次结构中选择 01_Sample 的 (子对象) 01_Cube (Playmaker)。
使用 Rotate (旋转) 旋转它。
旋转参数说明如下:
参数名称 | 参数说明 |
---|---|
Game Object | 将应用操作的对象。 |
Vector | 指定绕 X、Y 和 Z 轴旋转的旋转矢量。注意: 可以覆盖下面的各个轴 |
X Angle | 绕 X 轴旋转的度数。 |
Y Angle | 绕 Y 轴的旋转度数 |
Z Angle | 绕 Z 轴的旋转度数 |
Space | World (世界) 根据世界坐标旋转。 Self 根据 Game Object 中指定的对象进行旋转。 |
Per Second | 旋转以度/秒为单位指定。 这是每秒的旋转量。 (如果您希望对象连续旋转,请选中此框。 |
Every Frame | 重复每一帧。 (如果您希望继续旋转,请选中此框。 |
关于 Space 参数
将 Transform 的 Rotation X 设置为 45,将 “Rotate” 操作的 Y Angle 设置为 180。
“Space” 设置为 ”World“,它将根据世界坐标旋转。
将 Transform 的 Rotation X 设置为 45,将 “Rotate” 操作的 Y 角度设置为 180。
Space 设置为 Self,则旋转基于 Game Object 中指定的对象的坐标。
5.4.2 Active/Inactive
以下是逐个停用 02_Sample 的 5 个球体,然后激活所有 5 个球体的操作。
在层次结构中向下选择 (子对象) 02_count (PlayMaker) 的 02_Sample。
这是使用 Activate Game Object 和 Wait 创建的,我们在 5.2 中学到了这一点。
5.4.3 随机事件
这是一个在 03_Sample 中随机更改 Sphere 材质的 Action。
在层次结构中选择 (子对象) 03_Capsule (PlayMaker) of 03_Sample。
在 State1 中使用 Random Event 过渡到 1/2/3 之一。
Random Event 参数如下:
参数名称 | 参数说明 |
---|---|
Delay | 指定发送事件之前的时间(以秒为单位)。 |
No Repat | 如果您不想连续两次重复同一事件,请选中此框。 |
使用下一个 State 中的 Set Material 来更改颜色。
Set Material 参数如下:
参数名称 | 参数说明 |
---|---|
Game Object | 将应用 Action 的对象。 |
Material Index | 对象材质的索引 基本上,只需要 0。 |
Material | 设置要用于对象的材质。 从项目中拖放材质以设置材质。 |
5.4.4 创建对象
04_Sample:在场景中创建 Cube 的操作。
在层次结构中选择 04_Sample 的 (子对象) 04_Sphere (PlayMaker)。
重复 Create Object (创建对象) 在场景中创建对象,然后等待 1 秒钟。
Create Object 参数说明如下:
参数名称 | 参数说明 |
---|---|
Game Object | 将应用操作的对象。 |
Spawn Point | 将创建对象的位置 可以是场景中的对象 |
Position | 允许您设置位置 |
Rotation | 允许您设置旋转 |
Store Object | 将创建的对象存储在变量中 |
播放场景时,由 Create Object 创建的white_Cube将继续在层次结构中创建,名称为 white_Cube(Clone)。
使用 Create Object 继续创建对象时,需要注意一些。
不要无限期地创建对象。
因此,请务必包含操作,例如在对象数量达到特定级别时 “stop” 或在几秒钟后 “delete” 。
在此 white_Cube 预制件中,我们包含一个操作,用于在 5 秒后删除对象。
要删除对象,请使用 Destroy Object (销毁对象)。
Destroy Object 参数说明如下:
参数名称 | 参数说明 |
---|---|
Game Object | 要操作的对象 |
Delay | 触发操作之前的时间 |
Detach Childern | 在删除对象之前分离子对象 |
5.4.5 通过碰撞更改对象
当 Cube 与 05_Sample 中的 Sphere 发生碰撞时,我们引入了一个 Action,将文本从 SKY 更改为 SEA 再到 SUN。
在层次结构中选择 (子对象) 05_Sphere (PlayMaker) of 05_Sample。
使用 5.2 中学到的 Trigger Event。从头开始创建 PlayMakerFSM(什么是触发器?),跳过事件,停用显示 SKY 文本的对象,并激活重复显示 SEA 文本的对象以创建它。
5.4.6 使用四则运算改变缩放大小
06_Sample 是一个使用二次运算更改 Sphere 大小的 Action。
在层次结构中选择 (子对象) 06_Sphere(PlayMaker)。
我将从上到下按顺序解释。
Get Distance 用于获取物体与目标的距离,并将获取到的值存储在 Store Result 中设置的变量中。
Get Distance 参数说明如下:
参数名称 | 参数说明 |
---|---|
Game Object | Action 的 Target 对象 |
Target | 要测量其与 Game Object 的距离的目标对象。 |
Store Result | 存储 Game Object 和 Target 之间的距离。 |
Every Frame | 对每一帧重复此操作。 |
Store Result 是存储结果的变量;如果创建一个名为 Distance 的变量,并在其中输入 Game Object 和 Target 之间的距离值,则可以在其他操作中使用 Distance 的值。
使用通过 Get Distance 获得的值 (Distance),将 Float Multiplay (multiply)、Float Add (add) 和 Float Divide (divide) 应用于 Distance,最后将 Distance 的值设置为 Sphere scale X, Y, Z with Set Scele。
Float Multiply 参数说明如下:
参数名称 | 参数说明 |
---|---|
Float Variable | 要相乘的变量 |
Multiply By | 乘以 |
Every Frame | 此操作每帧重复一次。 |
Float Add 参数说明如下:
参数名称 | 参数说明 |
---|---|
Float Variable | 要添加的变量 |
Variable to be added | 要添加的值 |
Every Frame | 此操作每帧重复一次。 |
Float Divide 参数说明如下:
参数名称 | 参数说明 |
---|---|
Float Variable | 待分变量 |
Divide By | 要除以的值 |
Every Frame | 对每一帧重复此操作。 |
Set Scale 参数说明如下:
参数名称 | 参数说明 |
---|---|
Game Object | 将应用操作的对象。 |
Vector | ScaleX,Y,Z 可以设置为 Vector3(X,Y,Z) 的形式。 但是,参数 X、Y 和 Z 优先。 Vector(2,2,2),其中 X 和 Y 为 None,Z 为 3。 |
X | 为 Transform 的 Scale X 设置的值 |
Y | 为 Transform 的 Scale Y 设置的值 |
Z | 为 Transform 的 Scale Z 设置的值 |
Every Frame | 此操作每帧重复一次。 |
6. PlayMaker 下载地址
🍉🍉🍉 如果觉得这篇文对你有帮助的话,请点个赞👍、收藏⭐️下吧,非常感谢! 💕💕💕
【博主简介】:10年以上软件开发经验,精通C语言
、C++
、C#
、Java
等开发语言,开发过大型 Android 项目,现主要自主开发经营 休闲益智类小游戏。
【粉丝福利】:博主收藏了大量游戏开发资源和素材。这些资源经过博主多年整理沉淀,现筛选一批精品资源,分享给大家学习研究。
Unity打怪军团 广招天下勇士加入 Unity学习互助小组 需要进群的同学联系我,互3互推也请联系我…