由于是第一次写博客,可能有些不足,还请大佬们指出:
在资源商店里面搜索playmaker,点击下载插件: 如果导入后出现了这个问题:

就打开更新的脚本:PlayMakerAutoUpdater,将:if (NeedsUpdate())里面的代码全部注释掉

安装完后:会出现一个playmaker选项卡:,选择第一个playmaker editor 打开编辑器

状态机fsm简要介绍:

切换状态:
由状态1切换到状态2:需要添加过度:finished

再添加事件:
选择过度到下一个状态的触发事件:并且选择过度目标为下一个状态


这样就会连接两个不同的状态了
例如下面列子:按下按钮后会触发过度事件on,会切换到到下一个状态

Finished:当动作执行完后自动跳到下一个动作
Send event:发送事件

触发事件:选取添加过度—》system—》触发事件

获取动画和播放动画:
需要组件上有animation组件,将动画放上去

在控制器中添加play animation动作,将拥有动画器组件的gameobject放上去,再选取将要播放的动画

变量:

创建的一个private的变量
Public变量:需要将检查面板勾选![]()
利用变量可以控制物体的变化:例子:利用变量链接滑条和动画时间帧

设置float变量初值和更改变量值(不能累加).

比较两个数,满足条件则触发事件
.
累加:一次加0.5

设置全局变量:相当于static全局静态,可以在其他状态机上面使用

在改变其他状态机上面的变量可以直接调用全局变量,也可以使用set fsm float调用上面的状态机上面的变量

Mousedown/mouseup :鼠标按下和鼠标弹起事件
需要添加动作

Wait 等待:等待多少秒,触发相应的逻辑

获取按钮事件:get key down/up
按下或者抬起会触发相应的事件

Mouse Pick:
Mouse Pick会由鼠标屏幕二维坐标转换成摄影机平面二维坐标,再将这一坐标对应的三维空间位置沿着垂直于摄影机平面的方向发射一条长度为Ray Distance的ray,并返回碰撞结果为相应数据类型的变量值。

Mouse Pick Event:发送一个鼠标的事件,图下用的全局事件hit来过度

全局事件:利用全局的事件进行多状态机连接
![]()
第一个状态机:

第二个状态机:

射线raycast
调试一定要勾上:

返回的碰撞事件 hit event,利用hit event连接不同的状态机,进行碰撞鉴定
碰到物体后,物体上面的那个全局事件接收到消息,过度到下一个相应的状态
自定义动作脚本:
打开自定义动作脚本模板:

编辑脚本:

代码中:。
Owner.transform.position
Owner:代表的就是自己这个物体;
利用public 公开的变量可以进行在外部修改

状态机中的动作:

Fsmfloat这种在前面添加了fsm的类型,在外部状态机中就可以使用变量;
![]()
发送事件:
![]()
![]()
需要这两个对象
FsmEvent:是事件变量
FsmEventTarget:是目标变量-----》game object
//发送消息
Fsm.Event(目标变量对象,事件对象);
特性:说明

以上,就是我学习playmaker的学习历程,可能写的并不好,如果有哪里有问题,请告诉我,谢谢。
本文详细介绍了PlayMaker状态机的基本操作,包括切换状态、事件触发、动画控制、变量使用及自定义动作脚本编辑。通过实例展示了如何创建状态过度、使用全局事件连接不同状态机,以及射线碰撞检测的应用。

2531

被折叠的 条评论
为什么被折叠?



