【2dfm教程】横版斗魂使用说明
2dfm吧
全部回复
仅看楼主
level 9
何为 横版斗魂?
横版斗魂是是使用2dfm制作的一个模板游戏,所谓模版就是让玩家通过修改这规模板游戏来迅速制作自己的原创游戏的基础
但它不是2d格斗游戏的模板,这个模板是用来制作2d横版攻关类(比如仿《地下城与勇士》)的游戏的
与2dfm制作的常规游戏不同,这个模板制作的游戏是拥有8向移动和跳跃的,而且可以设置场景墙壁阻挡区域(形状可以自定义,在剧本模式下,允许角色不同屏时,就和老街机时代的横版清关游戏没有任何区别)
2012年10月30日 15点10分 1
level 9
下载地址 [有效] http://pan.baidu.com/share/link?shareid=94142&uk=1325466123
该模板支持在测试模式下的 玩家vs玩家 玩家vs电脑 电脑vs电脑
2012年10月30日 15点10分 2
需要用本吧置顶中的2dfm格斗游戏制作大师软件进行编辑修改
2012年10月30日 15点10分
插播广告:此作品很多人看了脚本可能觉得复杂,但这个和 格斗版的《斗魂》相比,就是小渣渣,功能只是格斗版《斗魂》的零头
2012年10月30日 18点10分
level 9
使用教程:
用2dfm打开 横版斗魂.kgt文件,选择 角色 标签页,查看 角色 1。
打开脚本表可以看到所有脚本,要点如下:
1--所有黑体字项目,你都可以选择不作任何修改
2--项目名称前的级别号是用来区分脚本项目的用途的,而没有其他特殊的意义,按照级别号分类为:
0级:响应玩家输入的招式项目,无需修改
10级:供公共调用的一些功能脚本,部分可修改(后文细说),如无必要不需要管他
20级:人物招式的动画,也是想制作原创游戏的玩家主要进行修改的部分
30级:所谓的 核心脚本,就是用来支撑8向移动和跳跃等功能的实体脚本,除极个别的项目外,请勿修改
本模板使用的变量及其含义:
角变A:人物本体的招式状态标志,0~9为八向移动和站立,10~19为各种受伤,20~29为八向跳跃,30以上为攻击,标志状态通过一系列对其数值进行检测然后分类跳转的脚本来实现玩家输入对人物出招和招式动画的控制
角变B:人物动画的号码标志,一般与人物本体招式的状态标志 角变A 的数值相同来匹配对应,主要用途是用来供计算机查询当前播放的动画是哪一个
角变C:人物x坐标,最初用来区分1P和2P,但主要目的是用来让人物检查自己当前位置,在战斗最初自动站位到指定开场位置
角变D:碰壁方向标志,1为上方被阻挡,2为下方被阻挡
角变E:碰壁方向标志,1为左方被阻挡,2为右方被阻挡
角变F:跳跃方向标志,用于告诉跳跃攻击应该朝哪个方向移动
角变G:跳跃进程标志,永固告诉跳跃攻击何时结束

2012年10月30日 15点10分 3
level 9
基本制作原理:
【第一部分】如何实现人物8向移动
我们都知道2dfm的人物有一个本体,本体能够在我们按下8个方向时,自动使用 前进 后退 前跳 后跳 上跳 蹲着 蹲着前进 蹲着后退 这8个黑体字招式,但是这里有一个问题,假如我们让人物本体在画面上移动(即把8个黑体字招式制作为直线移动的动作),一旦人物移动到空中(y坐标不是0),此时按8个方向也不能再控制人物做任何移动了,人物只能站在空中原地,不再响应任何移动指令
所以,要想让8方向输入永远随时有效,那么人物本体绝对不能离地
因此,真正在空中8向移动的实际上是一个能够受指令操控的【物】
但如何让物体受指令操控呢?2dfm中,物体是不能直接响应指令的,但物体可以响应变量,如果我们输入8个方向,激活默认8个招式,每个招式对应修改同一角色变量的数值,即每个招式对应一个值,让这个物体检测当前是哪一个值并跳转去对应的脚本,例如我们按“前”激活黑体字“前进”,该招式对应数值9,那个物体检测到这个数值做出对应向右方向的移动,这就实现了指令控制物体定向移动
这个真正做8向移动的物体,被称为 核心,级别数为30的那些脚本项目都是这个 核心 的脚本。
实际上这个核心不仅仅可以做8向移动,如果我们设定攻击招式、受伤动作也对应自己的变量值,那么这个核心也可以根据对应变量值,跳转去受伤和攻击的脚本,这样就实现了玩家输入任何指令都能被 核心 响应的功能

2012年10月30日 16点10分 4
level 9
【第二部分】如何实现墙壁阻挡
显然我们可以考虑用阻挡属性的【防】来完成这个任务,只要让一个人物本体带有这样有阻挡效果的多个【防】,并且围成我们要的边界,再让上面说的那个 核心 也带有阻挡【防】,它就没法跑出界外
但问题是:多个人物的 核心 同时在画面上面时,他们也互相阻挡,而我们知道横版过关游戏里面那些杂兵都是可以互相穿越的
所以,实际上我们不能用阻挡【防】来完成这个任务,而必须另外制作碰触判定
具体的做法就是,给 核心 挂上4个与源同在的【物】,分别判断上下左右四个方向是否有障碍,例如左边的这个【物】碰到障碍,就修改一个变量的数值,告诉 核心:“左边现在有障碍物”,核心 检测这个数值,调整自己的移动速度为向右移动,但移动的时间很短,看起来就像被左侧墙壁弹回,略微向右回移了一点
四个【物】甚至可以协同工作,例如 核心 上方和右方的两个【物】同时报告有阻挡,核心将会向左下移动,像是被右上方墙角弹回来一样
但具体的碰触判定如何实现呢?其实就是把墙壁做成受伤属性的【防】,四个【物】用【攻】区配合【招】检测攻击命中时修改变量报告核心有障碍物
2012年10月30日 16点10分 5
level 9
【第三部分】跳跃时出招的实现
按照上述原理,8向跳跃其实就相当于8个攻击招式而已,指令是某一方向+B,只要给每个招式设定对应的变量值,核心 就可以响应并正确跳转到8向跳跃的动画去
但跳跃过程中如何做到随时出招的呢?
其实很简单,专门制作一个核心脚本“跳跃攻击招式发出”,只在跳跃过程里每隔一小段时间调用它一次,用来检测与地面攻击相同的变量值,只不过此时按照变量值跳转去空中的攻击招式
此外还有一个问题:如何让攻击招式继承本次跳跃的方向呢?
这也需要设置另一个变量,每个方向的跳跃开始,把这个变量修改成一个特定数值,核心 处于跳跃攻击招式状态时只要检测这个变量在起跳时被修改成什么数值,就知道跳跃方向了,核心 只需要自己按照这个数值设定一下移动方向,跳跃攻击就继承了跳跃的最初方向
如果我在跳跃过程里(而不是最初)才使用跳跃攻击,那么跳跃攻击如何能够按照正常跳跃的滞空结束时间来结束自己的动作呢?
这需要第三个变量,我们在跳跃过程的每一瞬间,修改这个变量的数值一次,那么它的数值就等于记录了跳跃攻击从何时发出,核心 只要获取这个数据,就可以算出跳跃攻击还剩多久落地(毕竟跳跃腾空的时间是固定的),于是就可以控制攻击招式的播放时间,只要时间一到,就进入落地状态
2012年10月30日 17点10分 6
level 9
【第四部分】如何实现攻击
这里就是在画面外不同高度区域里设置攻防区域,每隔500像素高度,为一个区域,例如我们在人物正常出拳位置设置【防】来作为拳头,敌人在正常身体位置设置【攻】来代替脸,如果我想让拳头打脸导致敌人只是后仰,那么我可以把拳头的【防】与敌人脸的【攻】同时下移1000像素,保持相同高度,虽然画面内看不到,但他们还是会正常相撞,脸会探测到拳头,并反馈给 核心 “我已经挨打”的信息(通过修改变量值为一个特定数值),核心 只要知道这个变量是挨打的标志,就会跳转去挨打的动画
但是,不同的攻击效果是怎么做到的?比如我们可以被敌人打得后退,也可以被敌人打飞,如何区别呢?
同理,如果我把拳头的【防】和敌人脸的【攻】都一起下移1500像素,他们当然也能判定敌人被打伤
那么如果敌人的脸在下降1000和下降1500这两个高度各有一个【攻】,分别用“与源同在”的【物】携带,可以各自做自己的命中判定,可以把受伤变量值修改为不同的数,它们就等于可以在各自碰到我方拳头时返回不同的受伤变量数值,敌人的 核心 就能用不同的返回数值来区分我方的攻击是打退还是打飞,并跳转去作出对应的动作
横版斗魂 里面给人物的 核心 提供了6个不同高度的【物】,每一个都能在攻击命中对方的【防】之后返回不同数值:30~35,也就对应了 核心 能识别并作出6种不同受伤动作,而且这个检测时随时随地进行的,只要对方在某时刻在某高度出现一个【防】,人物 核心 就能检测到这个【防】的攻击,并根据返回的数值做出对应受伤动作
那么如果我们想要敌人作出某个受伤动作,只要在对应的高度设置一个【防】即可
而只要在受伤动作中也随时安排这6个不同高度的【物】检测【攻】是否命中敌人,就能在受伤过程里随时再次接受攻击,核心的所有动作招式中,只要能被攻击的,就可以设置这套检测机构,而没有设置这套机构的招式,就是无敌的
2012年10月30日 17点10分 7
例如被打倒爬起时就不设置这套检测机构
2012年10月30日 17点10分
level 9
【第五部分】如何实现跳和站立的不同攻击属性
我们希望跳跃之后不能被站里的某些招式攻击,却能被另一些专门对空的招式攻击,怎么办呢?
方法和上面类似:在画面外特定高度设置【物】判断攻击命中后,为空中被攻击,这个高度的【物】是跳跃以后的招式特有的,站在地面的招式都没有,而站在地面上的招式所拥有的那些检测受伤的【物】,则是空中招式没有的
这样一来,我们在敌人空中招式特有的【物】的【攻】的高度设定我方攻击招式的【防】,就能攻击空中的敌人了,而这个【防】无法攻击站立时候的敌人
同理,我们在敌人地面招式特有的【物】的【攻】的高度设定我方攻击招式的【防】,就能攻击地面的敌人了,而这个【防】无法攻击跳跃中的敌人
如果想要一招攻击招式能同时对空又对地,那就在敌人空中招式特有的【物】和敌人地面招式特有的【物】的【攻】的高度分别都设定我方攻击招式的【防】,就能同时攻击空中和地面的敌人了
横版斗魂中,默认的受伤反应设置为:
地面特有的【物】的【攻】区高度为:
y=+500:检测被抓
y=+1000:检测被击退
y=+1500:检测被击飞倒地
空中特有的【物】的【攻】区高度为:
y=+2000:检测在空中被击飞倒地(空中只有这个受伤反应)
你还可以自己添加新的高度的【物】设置新的变量值,制作新的受伤反应,方法类似
横版斗魂中各种攻击招式的性能如下:
站立A:原地刀砍,横向攻击距离中等,纵向攻击宽度窄,击退地面对手,能对空
站立中 前(或后)+A:冲刀,横向前冲,纵向攻击宽度窄,击倒地面对手,不能对空
站立中 上(或下)+A:抓,让地面敌人原地受伤,不能对空,横向攻击距离短,纵向攻击范围宽
跳跃中 A:横向攻击距离中等,纵向攻击范围窄,能攻击空中和地面,击退地面的敌人(可接地面连续技)
2012年10月30日 17点10分 8
level 9
【第六部分】如何简化脚本
看了前面的内容,你一定会说,所有判断脚本和动画都放在 核心 里面运行,那脚本得多乱啊!没错,如果都放在 核心 里,真的会很乱
解决办法就是给 核心 加一个“与源同在”的【物】,让它来播放动画,具体播放什么动画,由 核心 控制,我们把它称为 核心 的 外皮
在 横版斗魂 中,外皮动画所用到的项目,其级别号都是20,如果你想要做自己的游戏,可以考虑先修改这些动画,已经有的攻击招式基本上都是最通用的,你没必要修改,只是如果你想要有更多攻击招式,你自己新建就行了(请注意,攻击招式部分是有模板项目的,那些末班项目就是一个未设置的攻击招式,你只要把那些脚本复制后插入给你新建的攻击招式项目,即可立即拥有攻击招式的雏形,剩下的工作就是修改攻击区域---实际上是【防】、给【物】调用动画、设置受伤判断在什么时间段存在---不存在的时间段就是无敌)
大量需要重复书写的脚本,我都制作成了模块项目,由需要它们的项目【调】用,所以我可以在很短时间里(最近三天)完成这个看似很复杂的东西,如果你还要添加开发新的功能,也可以用类似的方法简化脚本书写

2012年10月30日 17点10分 9
level 9
修改指南:
【第一部分】修改动画
所有项目名称前级别数字为20的项目都是动画,动画项目前通常都有一个【变】设定 角色变量B的数值,这个是用来后续开发用的,目前来说,你新建招式动画只要不设置为0~9就行(0~9是原地站立和八方向移动专用的!除此之外的数值爱设多少都没影响)
后面是一系列纯粹的【图】,必须要设置攻防和移动速度,那些东西都是在 核心 的脚本里面设置(级别30的)
动画有两个模式:角色0的是动画中还带【物】,把人物分为上半身和下半身,上半身图层比较靠外,能遮挡下半身,以此来简化头遮挡脚的效果的制作,原则上来说还可以继续细分,一个人物最好能分为4段。角色1的是整图的动画,遮挡效果没有,如果不太在乎这个效果,只为了省事,可以考虑用角色1为蓝本制作你自己的人物
影子的图像,只允许替换,不要删改,因为那是 核心 的图像,增减可能会导致脚本运行故障,除非你像我一样熟知每部分脚本如何修改不会影响功能

2012年10月30日 18点10分 10
level 9

【第二部分】新增受伤反应的 核心 脚本
新增任何受伤反应,都应该新建一对,分为面对左和右两个
推荐以
36(面对右)和37(面对左)号项目为复制蓝本,复制其脚本,插入给你新建的受伤反应项目
新建受伤反应的第一个【物】用来调用该受伤反应的动画(一般是你新做的)
各个【移】用来设定每时刻的移动速度,
其他东西无需修改
如果觉得受伤反应脚本总时间太长,可以在某个【图】之后加【跳】跳至本项目的最后一个【跳】,就等于把一部分招式运行时间跳过了,如果觉得脚本总时间不够长,可以按顺序复制中间某个【图】后的【调】【移】【调】【调】【图】五个脚本粘贴在末尾的最后一个【调】之前,来增加5停留时间的脚本时间
2012年10月30日 18点10分 11
level 9
然后新建一个项目复制插入76号项目的脚本(如果这个项目还是备用状态,你不用新建,直接可以用它):
设置其中的【变】为你想要的数值14
把它改一个名字,以便今后你知道这个项目已经使用了,不再是备用的(如果你是新建了一个项目并复制插入了脚本,那就更需要改名):
然后找到66号项目:
使用其中一个备用的【物】(例如下图的)
把它的物体出现设置设为你刚才选用的“新受伤判定2”(由于本例中我选用的是已经存在的备用项目,所以他们的关联已经提前设置好了)
最后查看你选用的【物】的y坐标是否与前面被使用的【物】的y坐标重复,如果前一个【物】的y坐标是2000,你这个【物】就要比它多500(就是2500),如果前一个【物】是5000,你这个【物】就应该是y=5500
到此为止,你新建的受伤反应已经可以被 核心 识别并正确跳转了,但要想它出现,你还需要在人物攻击招式里设定【防】的y坐标与刚才设置的【物】的y坐标相同(例如2500)

2012年10月30日 18点10分 13
level 9
如果你新建的是空中系统的受伤反应,请找到96和97号项目:
同样制作【变】跳转:
然后新建一个项目复制插入备用项目的脚本(如果这个项目还是备用状态,你不用新建,直接可以用它):
把其中的【变】设置为和前面的判定项目都不相同的数值,例如15:
改名:
然后找到95号项目:
复制它的【物】粘贴在【跳】之前:
设置y坐标为500的整数倍,不要和任何同类的【物】脚本的y坐标相同,出现物体设置为刚才选定的“新空中受伤反应3”:
到此为止,这个新的空中受伤反应也能用了

2012年10月30日 19点10分 14
level 9
【第三部分】站立攻击招式制作

【第四部分】跳跃攻击招式制作

【第五部分】扣血和复活的制作
待续
[鲁拉]
2012年10月30日 19点10分 15
level 11
[顶]
2012年11月01日 00点11分 16
level 9
感谢老师深度教育,此贴老衲还得好好消化一下
2012年11月02日 04点11分 17
level 7
赶紧更新啊,谁出个仿dnf出来,自己制作很头疼……
2012年11月23日 09点11分 18
level 7
只是简单的替换图片,赶紧写上下面的步骤啊……
2012年11月26日 15点11分 19
level 7
速度……
2012年11月27日 05点11分 20
level 7
火星人太监了……
2012年11月28日 00点11分 21
1 2 尾页