【口袋方舟编辑器】简单好用动效编辑器, 小白也能做技能动效【单脚本】

还在头痛自己的游戏没有帅气的动效嘛?
试试MyClearAct吧!小白也能做炫酷动效!~
单脚本版动效UI编辑器,一个脚本解决动效编辑、序列生成、接口调用
装备编辑、编辑态消费态切换、guid获取、资源预加载
可拓展性强,兼容各类伤害协议,可自定义硬值、击飞、眩晕等玩法

 

1. 获取、部署MyClearAct动效编辑器
 MyClearAct.ts (150.29 KB)
* 更新日志:
* 当前版本:v0.1.23 2024.03.10
* 1.对新版动画无法获取length的bug做兼容,由于新版动画特有的bug获取lenth失败,暂时将获取不到length的动画播放进度作为它的播放速度使用,且在播放耗时到了之后自动停止播放
* ---------------------
* 历史版本:
*版本:v0.1.21 2024.01.22
* 1.修复方盒判定宽高参数误传导致的位移等检测无法正常使用的bug
* 版本:v0.1.20 2024.01.21
* 1.修复按X隐藏面板后无法再唤出面板的bug
* 2.修复装备节点无法调整xyz、scale的bug
 
* 版本:v0.1.19 2024.01.19
* 1.修改底部按钮的着色方式以适配029
* 2.新增输入框回车后不打出换行而是输入完成
* 3.修复模型.tag判空逻辑,感谢MyClear测试小队的建议~
* 4.新增功能,修改节点下序号会插入到已有序号之前
* 5.修复某些特定情况下拖拽会消失的bug
*
* 版本:v0.1.12 2024.01.14
* 1.修改actNow、stopNow方法,移动到S端,现已支持非玩家角色播放动效
* 2.优化stopNow,现在可以更好的停下了
* 3.优化装备节点,新增slottype在100~200的时候会在原地而不绑定角色,作为召唤物存在
* 4.修整击中反馈相关逻辑,新增guid<0时不播放规则
* 5.新增MCA判定支持tag不为空的Gameobject
* 6.新增MCA支持Gameobject播放MCA动效
1.1 下载好后,直接导入到任意工程,往场景里拖一个空锚点,再将脚本拖入到场景里的空锚点上
详见:单脚本的使用方法    !注意!场景里面只能有一个MyClearAct.ts
    放多了的话会出现卡UI的情况,不要多拖了!


1.2 属性详解
※ 全局配置:
      这里主要是比较通用的配置
□ 是否开启编辑态:
      √ 勾选后,进入游戏将出现动效编辑器UI,此时可以进行动效编辑操作,导入导出动效JSON;
      X 取消勾选后,进入游戏不会出现动效编辑器UI,不能进行动效编辑操作。

□ 优先加载:
      在这里填好的guid序列会在onStart的时候加载好,但我还是建议你拖到对象管理器优先加载里~
      不用担心重复,这里会检测是否已加载,重复的不会有影响的

※受击特效:
      角色被判定区击中时身上会播放的特效

□ 受击动画:
      角色被判定区击中时会播放的动画

※技能列表:
      这里是储存做好了的技能,方便后续调用,点击 + Add 可以添加自己捏好的技能

□ 技能名:
      配置技能的名字,任意端使用MyClearAct.instance.actNow(player,技能名);即可触发
      注意:技能名为“default”的技能json,会在编辑态启动时自动反序列化,如果你有想修改调整的动效,可以在启动前贴好哦~

□ 技能Json:
      与当前技能名对应,在动效编辑态下捏好,序列化出来的Json序列放到这里,以便调用

2. 运行游戏,预览动画


2.1 点击播放,预览预设动效



3. 节点功能,添加节点
点击屏幕下方的按钮可以进行动效节点新增
  上方动效序列中的节点卡片,点击X删除,卡片下方< >可以移动位置
3.1 特效节点
  攻击者播放特效,任意端调用,会自动广播

       


  □   特效GUID: 需要播放的特效,建议先拖到优先加载里
  □   时间/次数 特效播放的次数(正数)、时间(负数)
  □   水平距离 特效播放位置与攻击者位置的水平距离
  □   垂直距离 特效播放位置与攻击者位置的垂直距离
  □   偏航角度 特效播放位置的航向旋转偏移,顺时针为正
  □   特效缩放 特效的缩放
  □   特效旋转 特效的旋转
  □   特效插槽 特效的播放插槽,<0则在场景里播放,不绑在角色,23绑在角色根节点,节点API:SlotType | API
3.2 动画节点
  攻击者播放动画,任意端调用,会自动广播

       


  □   动画GUID: 需要播放的动画,建议先拖到优先加载里
  □   播放耗时:期望动画播完的总时长,秒
  □   播放进度:期望动画播到什么进度(0,1],接口会自动帮你算好速率
  □   播放插槽:期望动画播在什么人物插槽上,0、3=全身,2=下半身,1=上半身,插槽API:AnimSlot | API
3.3 音效节点
  攻击者播放音效,任意端调用,会自动广播

       


  □   音效GUID: 需要播放的音效,建议先拖到优先加载里
  □   音量:声效音量,默认1
  □   无衰半径:声效内径,这个范围内声效不会衰减
  □   衰减半径:声效外径,声效内径到声效外径这段距离里,声效会衰减到消失
  □   停止秒数:声效停止时间,秒,0或负数则不按时停止,等播完自动停止
3.4 位移节点
  玩家向给定方向位移

       


  □   水平距离:需要位移目标点离当前角色的水平直线距离
  □   垂直距离:需要位移目标点离当前角色的垂直直线距离
  □   偏航角度:航向旋转偏移,以水平面为钟,角色朝向为12点,顺时针为正
  □   位移耗时:位移需要花费的时间,秒
  □   检测次数:位移期间需要用射线检测碰撞的次数,建议lenth的每100m(一个标准正方体的边长)检测2次,以减少卡墙概率;
  ※  小技巧:当位移的水平距离、垂直距离都为0时,检测次数建议为0,此时玩家将会被禁锢在原地无法移动旋转,这可以作为技能过程中的硬值,也可以作为技能命中敌人后,让敌人以技能执行的形式产生眩晕或击飞(垂直距离抬高)的效果
3.5 球圆判定
  球、圆柱型判定,双端,且发起端会显示具体判定区域

       


  □   水平距离:判定区原点离当前角色的水平直线距离
  □   偏航角度:航向旋转偏移,以水平面为钟,角色朝向为12点,顺时针为正
  □   垂直距离:判定区的位置抬高,向上为正
  □   半径:判定区的半径
  □   圆柱高度:判定区的圆柱高度,高度不为正就改为球形判定
  □   判定伤害:被该判定击中的伤害,可在脚本里搜索onHitDamage,在该方法下接入你自己的伤害协议
  ※  小BUG:当前版本(v0.22.0.x)圆柱检测存在实际检测位置与绘制位置不符的问题。即圆柱实际检测位置比绘制位置高半个角色身位,将在v0.23.0.0修复。
3.6  方盒判定
  方盒判定,双端,且发起端会显示具体判定区域
       


  □   水平距离:判定区原点离当前角色的水平直线距离
  □   偏航角度:航向旋转偏移,以水平面为钟,角色朝向为12点,顺时针为正
  □   俯仰角度:俯仰旋转偏移,向上为正
  □   垂直距离:判定区的位置抬高,向上为正
  □   方盒长度:盒型判定区的长度
  □   方盒宽度:盒型判定区的宽度
  □   方盒高度:盒型判定区的高度
  □   判定伤害:被该判定击中的伤害,可在脚本里搜索onHitDamage,在该方法下接入你自己的伤害协议
3.7 装备节点
  给玩家装备/去除指定插槽的装备装备

       


  □   模型GUID:装备的静态模型guid,<0则视为要清除该插槽的装备
  □   相对位置:装备的相对位置
  □   相对缩放:装备的相对缩放
  □   相对旋转:装备的相对旋转
  □   装备插槽:装备需要装在角色的哪个插槽,常用15左手|16右手|12背部,已有的话会清除旧的装新的,插槽slotAPI:SlotType | API
slottype在100~200的时候会在原地而不绑定角色,作为召唤物存在
3.8 延迟节点
       


  □   时长秒:延迟时长,秒
  ※  小技巧:在动画、特效、音效、判定区前后衔接相应的延迟,会让整个动效更加流畅、有打击感

4. 其他功能按钮
4.1 界面显隐
    显示或隐藏全局界面和射线、碰撞盒,快捷键X,隐藏后需要再按快捷键X显示


4.2 序列化
  将捏好的动效条序列化(从上到下),方便存储和调用,快捷键G


4.3 反序列化
  将下方输入框的Json序列反序列化(从下到上),方便对已有Json进行预览、编辑,快捷键H


4.4 获取GUID
  获取下方输入框Json序列里的所有GUID并去重,复制下来直接粘贴到全局配置>优先加载里~


4.5 播放
  播放当前上方动效条里的动效,快捷键1,播放时会暂时隐藏当前动效条,播放后显示回来,快捷键1


4.6 *防丢小助手
    经常有小伙伴编辑着编辑着不小心按到了Esc,忘了保存序列,血压爆表
    所以贴心设计了防丢小助手,每次按下播放按钮播放,会在log打出此次播放的序列
    万一不小心丢了,可以右键,打开日志目录,找到对应的log,里面还会有记录的~
5. 如何在非编辑态释放技能?
5.1 在属性列表里配置技能
  在属性列表>技能列表里点击 +Add
  填入技能名,和上面序列化导出来的Json


    另外,这里用的guid也要填入优先加载里


5.2 [可选] 关闭编辑状态


5.3 在任意触发脚本里加入以下代码
    MyClearAct.actNow(player, "red");
  例如:我们打开UI脚本(当然这一步你可以换成其他任何方式~比如自己的UI点击)
  将 JumpBtn.onPressed.add(()=>{}) 里的脚本魔改一下
<span style="color:#494b4d"><span style="background-color:#ffffff"><span style="background-color:#272822"><span style="color:#f8f8f2"><code class="language-typescript">
<span style="color:#8292a2">//点击跳跃按钮,异步获取人物后执行跳跃</span>
JumpBtn<span style="color:#f8f8f2">.</span>onPressed<span style="color:#f8f8f2">.</span><span style="color:#e6db74">add</span><span style="color:#f8f8f2">(</span><span style="color:#f8f8f2">(</span><span style="color:#f8f8f2">)</span><span style="color:#f8f8f2">=></span><span style="color:#f8f8f2">{</span>    MyClearAct<span style="color:#f8f8f2">.</span><span style="color:#e6db74">actNow</span><span style="color:#f8f8f2">(</span>Player<span style="color:#f8f8f2">.</span>localPlayer<span style="color:#f8f8f2">.</span>UserId<span style="color:#f8f8f2">,</span> <span style="color:#a6e22e">"red"</span><span style="color:#f8f8f2">)</span><span style="color:#f8f8f2">;</span><span style="color:#f8f8f2">}</span><span style="color:#f8f8f2">)</span> </code></span></span></span></span>
TypeScript
复制
修改完后保存
5.4 运行游戏,触发技能
  由于我们是在UIDefault里改的释放技能,所以运行后按跳跃键就会释放刚才的技能

6. 实用接口与拓展这里还提供了一些实用的接口,方便大家进行接入和二创~
6.1 功能方法
方法
功能
输入
返回
actNow(CID: string, skName: string)
[双端] 让某角色立刻释放某技能
stopNow(CID: string)
[双端] 让某角色立刻停止执行技能,并清除所有装备节点

注意:如果时长较长的节点后没有对应的延时节点,需要手动补一个延时节点才能够正常stop下来,否则会失效
whoIsOwner(objGUID: string): string
[仅服务器] 查询某装备节点的gameobject的物主CID
serverEquipMe(Attacker: mw.Player, guid: string, location: Vector, scale: Vector, rotate: Rotation, SlotType: number)
[双端] 装备/去除装备
serverDetachAllEquip(Attacker: mw.Player)
[双端] 去除某个玩家的所有装备,一般用于死亡或重新选角色的时候


6.2 事件接口
事件
描述
变量
备注
checkIfFriendly: ((PlayerID1: string, PlayerID2: string) => boolean)
[双端可用] 检查两个玩家id是否为友军
ServerDamageChar: ((AttackerID: string, VictimID: string, damage: number, skillName?: string, index?: number) => void)
[仅服务器] 服务器处理技能命中伤害



 
觉得好用的话给个赞或者评论一下吧~
另外~ 大家有捏的好的动效也欢迎发出来分享呀!
 

“沸羊羊桑,你也不希望美羊羊以后没有MyClear系列脚本用吧”
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值