Project1

标题: 使用YEP制作有趣的技能:巫医的弹弹乐 浅谈弹道弹射的制作 [打印本页]

作者: yihe74    时间: 2017-2-22 02:31
标题: 使用YEP制作有趣的技能:巫医的弹弹乐 浅谈弹道弹射的制作
本帖最后由 yihe74 于 2017-2-22 09:38 编辑

演示视频:

录得不好,见谅~~
演示了三种情况,分别是多个敌人,一个敌人,两个敌人的情况下,技能的不同效果。
首先,用到的插件:
YEP——BEC、Actpacks
Yami的自定义横版动作(非必要)
MOG的BattleHUD(非必要)
以及YEP——TargetCore Edit By Misuqian
在此鸣谢!
-----------------------------------------
近日在下一直研究如何制作出一个弹射类的技能:
就像是dota中巫医的麻醉药瓶,向第一个敌人掷出以后会一直在敌人单位中不断弹射,如果两个人的话会在彼此之间一直弹射;
要是一个人只会受到一次技能效果。
但是在YEP中这并不是一个很容易实现的效果(也许是我的插件版本太老),只有VE才可以实现这个功能。然而在下又不愿放弃YEP后续强大的功能,比如说RowFormation,于是

就研究出这样一个实现方法。若是有更为简便的实现方法,请各位看官不吝赐教。
------------------------------------------
不知各位是否研究过war3中的地图?在war3的地图中经常会使用这样的方法来实现技能效果:
创建一个透明的单位来释放技能以达到视觉效果。
在这里我们也是这样一个思路:
首先我们在数据库定义一个角色作为投射物,设定好他的行走图,这里我使用了Yami的自定义横版动作来定义它的walk动作。在此也向各位看官强烈推荐这个插件,非常简便好

用!
那么我们在技能设置中就要把它先加入队伍才行,不过要是透明的,不然太突兀了,效果会很烂!
eval: $gameParty.addActor(5)
opacity character 5: 0, 1
这样就实现了加入一个透明的投射物,不过要记得先将HUD隐藏起来 不然多出一个投射物的头像真的很尴尬!
那么我们要在前面加上:eval: $gameSystem._bhud_visible = false
但是由于YEP自身机制问题,有的时候飞镖会被敌人的战斗图像覆盖,那么我们就需要手动强制一下:
eval: Yanfly.Param.BECSideSpPrio = 1
这样就做完了准备工作。
我们先将投掷物移到User身边,这很简单就不帖代码了。
之后再投过去,不过不要忘记把透明度改回来!不然就是空气飞弹啦!
然后将动画效果补上,角色归位
最后不要忘记恢复HUD以及删除投掷物:
eval: $gameSystem._bhud_visible = true
eval: $gameParty.removeActor(5)
这里就是技能动作序列的书写要点了,稍后我会贴上动作序列,请各位看官不要着急,且听在下再罗嗦两句。
---------------------------------------------
现在我们来谈谈目标的选择,使用自带随机目标机制会造成一种很尴尬的局面,一个敌人被连续弹射多次。为了解决这个问题,我使用了YEP——TargetCore  Misuqian修改版

本,(再次在此鸣谢!)并且稍加修改,完成了这个弹射机制。
说一下我的思路:我们要在装有所有敌人单位的集合里挑出几个随机的编成数组来完成目标的挑选。上述插件很好的解决了随机挑选这一过程中的重复问题。
由于最终的目标数组是由初目标(我们指定的那个倒霉蛋)以及随机数组连接(concat)起来的,那么会出现以下两个情况:
连续对初目标的弹射以及在只有一个目标的时候造成两次技能效果。
这显然不行!
于是我做了很简单的修改:
在730行左右写Targetrandomfoes的这一块末尾加入了这样的判断:
if((targets[0] == targets[1]) && (targets.length != 2)){
                targets[1] = targets[2];
                targets[2] = targets[0];
        }
       

if(targets[0] == targets[1]){
                targets.splice(0,1);
        }
就解决了。
PS:这样是不会在同一敌人上起到2次技能效果的(除去初目标至多两次),若是各位看官感觉想做出那种在两个人之间一直弹射的效果,请自行修改TargetCore原版,使他的数组相邻元素不同就行了。
好了,最后附上行动序列:
<Target: Target 2 Random Foes>
    <setup action>
     eval: $gameSystem._bhud_visible = false
     eval: Yanfly.Param.BECSideSpPrio = 1
     Motion victory: user
     animation 52: user
     wait for animation
     MOVE user: forward, 100, 5
     MOTION thrust: USER
     wait: 36
     eval: $gameParty.addActor(5)
     opacity character 5: 0, 1
     MOVE character 5: user, FRONT BASE, 1
     opacity character 5: 100%, 1
     MOTION walk: character 5
    </setup action>
    <whole action>     
    </whole action>
    <target action>
     MOVE character 5: TARGET, CENTER, 17
     WAIT FOR MOVEMENT
         ACTION ANIMATION
         ACTION EFFECT
    </target action>
    <follow action>
    </follow action>
    <finish action>
        eval: $gameSystem._bhud_visible = true
        eval: $gameParty.removeActor(5)
        WAIT FOR ANIMATION   
        WAIT: 25   
        MOVE user: return, 20
        MOTION MOVE: USER
        JUMP user: 50%, 20
        WAIT FOR MOVEMENT
        PERFORM FINISH
    </finish action>
-----------------------------------------------
这个思路还有很多用处啦,比如说用来代替体积庞大的技能效果,使角色的战斗动画更为精简等等
FINISH AND ENJOY!
作者: sutao80216    时间: 2017-2-22 08:21
很好的思路啊,用角色模拟抛射物。这样的话,让人头疼的VE与YEP的兼容性问题也就绕过去了。
作者: walf_man    时间: 2017-2-22 17:56
太强大了,这战斗效果超炫
作者: mikeyh01    时间: 2017-2-24 09:29
楼主的脑洞让人佩服。
作者: Alex_Hzx    时间: 2017-3-2 17:52
可以实现小小扔队友的技能了!
作者: 18503097404    时间: 2017-8-25 10:02
你好,请问哪里可以下载YEP——TargetCore Edit By Misuqian这个插件?
作者: venomom    时间: 2017-9-23 14:57
本帖最后由 venomom 于 2017-9-23 18:54 编辑

挺好的创意,不过要是用了yep的ctb插件就尴尬了……还是希望yanfly专门出个投掷物品功能的插件
作者: yang1zhi    时间: 2017-9-23 15:36
有趣是有趣。不过也应该有克这个,破这个的。
不然就是单纯的刷怪,失去了操作性。
作者: m328759997    时间: 2017-9-28 14:38
老铁  这东西好几个插件不兼容啊
还有我就想简单做个技能 扔出去个技能 技能在怪之间随便弹  有什么简单的方法没
作者: 涅普姬雅    时间: 2021-10-30 09:01
草了,大佬真是鬼才
这下弹道插件都省了!
作者: 涅普姬雅    时间: 2021-10-31 07:06
涅普姬雅 发表于 2021-10-30 09:01
草了,大佬真是鬼才
这下弹道插件都省了!

视频死掉了,但是动作序列的代码还在啊,抄到自己的工程量就能看见效果了呀
作者: 剑崎一真Blade    时间: 2021-10-31 08:27
礼貌弹道插件:你吗?




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1