赞 | 0 |
VIP | 0 |
好人卡 | 0 |
积分 | 1 |
经验 | 69035 |
最后登录 | 2012-9-13 |
在线时间 | 30 小时 |
Lv1.梦旅人 沙皇
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 30 小时
- 注册时间
- 2006-7-6
- 帖子
- 304
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
第一篇教程(人物创建篇)及范例下载:
http://rpg.blue/viewthread.php?tid=117219
第三篇教程(飞行道具、AI篇):
http://rpg.blue/viewthread.php?tid=117455
看过上面的教程,相信大家已经能做出一个人物的基本动作了。那么,今天就来教大家怎样制作必杀技。
还是以红丸为例,在上一篇教程中,我们已经制作了红丸的各种基本动作,包括普通攻击技能。那么,如果我要制作红丸的必杀技“雷刃拳”,就像下面这样:
该怎么做呢?
方法还是一样,用gif movie gear打开这幅gif,另存为一张张png,因为一共有22帧,所以编号是从BENIMARU_161到BENIMARU_182
将这些图片也都放到Battlers文件夹里。
再来就是进入游戏工程进行设置。先在游戏的数据库中的“特技”一栏里设置,比如将1号特技设置为“雷刃拳”,消费的SP、威力等相关属性都自己设好。
接下来就是重点。打开脚本编辑器,在FullCBS part-6 (Skill & Equip)中找到127行左右的case skill_id,然后将when 1的内容改成如下:
when 1 # 雷刃拳
@ai_shooting_range_x_max = 100
@ai_shooting_range_y_max = 350
@action_duration = 44
@attack_motion_plan = [161,nil,162,nil,163,nil,164,nil,165,nil,166,nil,167,nil,168,nil,169,nil,170,nil,171,nil,172,nil,173,nil,174,nil,175,nil,176,nil,177,nil,178,nil,179,nil,180,nil,181,nil,182,nil]
@selfanimation_plan[ 1] = 1
@attack_skl_id_plan[ 15] = 1
@attack_rectan_plan[ 15] = Rect.new(-1,-156,96,66)
@attack_skl_id_plan[ 33] = 0
下面我来逐个说明。
@ai_shooting_range_x_max 是指电脑AI自动判断的出招距离。=100也就是说当两人的横向距离小于等于100的时候,电脑就会自动出这招“雷刃拳”。同理,@ai_shooting_range_y_max 是指电脑自动判断的纵向距离。
@action_duration 是指这个招式的持续时间。本来有22张图片,我们让每张图片持续2帧的时间,否则动作会变得太快,反而不太正常。所以这招的持续时间就是44帧(单位姑且就叫做“帧”吧)
@attack_motion_plan 就是施放这个动作的编号,把161-182号写在后面,它就会按顺序播放。要注意每个编号中间要空一个nil,这就是每张图片持续2帧时间的意思。
@selfanimation_plan[ 1] = 1是指在第一帧的时候,播放1号动画。方括号里的1是指第一帧,后面的1是指1号动画。这个的作用是在出招时播放一些音效,比如人物的叫喊“喝啊哈”之类的。注意,不能在“特技”的使用方动画里设置,那是无效的。
@attack_skl_id_plan[ 15] = 1是指从第15帧开始,实施1号特技的效果。这是很重要的一条,就是说对方在第几帧的时候中招。如果不设置,你会看到当红丸刚把手举起来,还没打出去的时候,对方已经中招了。
@attack_rectan_plan[ 15] = Rect.new(-1,-156,96,66)这是指第15帧施放攻击时的判定范围,和人物的坐标大小的设置方法一模一样。在脚本的part-8里改一改,也可以看到画出来的攻击判定的矩形框,而这框是红色的。
@attack_skl_id_plan[ 33] = 0是指在第33帧的时候,必杀技的实施效果结束,或曰“收招”。这样,在第15帧到第33帧之间都是有效的攻击时间段。即使敌人在第15帧时没有中招,只要他在第33帧之前接触到你的攻击判定范围,也会中招。注意每个招式都要设置收招的时间。
这样一来,一个简单的必杀技“雷刃拳”就制作完成了。红丸这个人物的职业如果是战士,那就让战士职业学会“雷刃拳”这个特技,然后在战斗中装备起来使用看看吧!
如果学会了上面的制作方法,我们就可以向更多元化的效果发起挑战了。我们来看下面两个必杀技:
第一种必杀技,我们称之为“突进技”,第二种称为“对空技”。他们的特点是施放的时候,人物并不是站着不动的,而是前冲或是跳跃。那么这种技能该如何制作呢?
其实也很简单,比如第一种“突进技”。我们在制作的时候大体和制作“雷刃拳”相同,只不过在脚本中定义招式属性的时候,要多加一行内容。比如我在制作这个“冲刺拳”的时候,就是这样写的:
when 49 # 冲刺拳
@ai_shooting_range_x_max = 500
@ai_shooting_range_y_max = 350
@action_duration = 46
@active_xspeed_plan[ 3] = 20
@attack_motion_plan = [211,nil,212,nil,213,nil,214,nil,215,nil,216,nil,217,nil,218,nil,219,nil,220,nil,221,nil,222,nil,223,nil,224,nil,225,nil,226,nil,227,nil,228,nil,229,nil,230,nil,231,nil,232,nil,233,nil]
@selfanimation_plan[ 1] = 38
@attack_skl_id_plan[ 13] = 49
@attack_rectan_plan[ 13] = Rect.new( 0,-200,86,120)
@attack_skl_id_plan[25] = 0
您发现了吧?多了一行@active_xspeed_plan[ 3] = 20。这句话的意思是在第3帧的时候,赋予人物+20的横向速度。那么,同样也可以将这速度设为负数,这样一来,人物出招时就是向后退。
您也许会问,那么制作人物跳跃的技能,是不是加一行@active_yspeed_plan就可以了呢?很可惜,原脚本中并没有定义过这个变量,如果我们要自己定义的话要修改很多地方,太麻烦。其实有这样一种方法,用这个语句@active_move_y_plan = [nil,nil,20,nil,20,nil,20,nil,10,nil]
这句话的意思是说,在第3帧、第5帧、第7帧和第9帧时分别让人物在y方向上上升20、20、20和10的距离。这样一来,在游戏中不就有了类似与跳跃的效果了吗?同样的,这里的数字也可以设为负数,不用担心,人物不会因为这样就钻到地下去了哦{/tp}设为负数可以用来制作在空中急速下降的效果。
脚本中定义了@active_move_y_plan 这个变量,也同样定义了@active_move_x_plan ,他也可以用来制作人物的横向移动。那么@active_move_x_plan 和@active_xspeed_plan有什么区别呢?前者是用来规定人物移动的方向和距离,而后者是用来规定人物的移动方向和速度。您如果有兴趣的话,可以尝试看看,原版脚本和我修改的脚本有什么不同。您会发现,原版脚本中,战斗时人物与敌人接触后可以径直穿过对方,而我修改后的版本,人物与敌人相遇就像撞墙一样,无法穿过对方。而事实上一般的格斗游戏,也是不允许人物之间相互穿透的。所以我说我修改的版本,更多的是模仿格斗游戏的风格。
而我修改的方法,就是降低人物移动的速度。原理是,当人物与敌人的横向距离小于一定值时,双方的速度就逐步降低,到双方相遇时,速度几乎为0,所以无法穿过对方。所以这样一来,用@active_xspeed_plan定义的人物移动,也是无法穿越对方的。而@active_move_x_plan 由于是直接规定了人物的位移,所以可以穿过对方的身体。在定义必杀技时,大家可以根据制作需要选择。
最后,是关于必杀技的施放效果。在格斗游戏中,有很多招式,中招的人会被弹飞几米远。那么,怎样在游戏中制作出这种效果,以体现出招式的威力呢?在脚本FullCBS part-2的430行左右,有一句blow = skill.power,blow就是吹飞值,我把他直接映射为招式的威力。吹飞值有什么用呢?在这个脚本的477行左右,找到if blow >= 20,我把他定义为当招式的威力大于等于20时,中招角色就会被吹飞,而吹飞=true的话,中招的人就会倒地。
再来是490多行的self.now_x_speed = skill.eva_f * direction和self.now_y_speed = skill.variance 意思就是被吹飞的x速度就是招式的“回避 F”,而被吹飞的y速度就是招式的“分散度”。一般将回避或分散度设在12以上,就会看到中招角色被弹飞蛮远了。
如果理解了上述定义规则,您也可以自己更改吹飞值、吹飞条件和速度定义等。
对必杀技制作还有什么不懂的可以跟帖留言,下个教程准备讲述敌人AI的设置。
欢迎拍砖{/hx} |
|