赞 | 1 |
VIP | 0 |
好人卡 | 1 |
积分 | 2 |
经验 | 4192 |
最后登录 | 2023-1-5 |
在线时间 | 135 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 220
- 在线时间
- 135 小时
- 注册时间
- 2008-4-30
- 帖子
- 106
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
本帖最后由 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! |
评分
-
查看全部评分
|