krkr初级教程..docx

上传人:b****9 文档编号:112888 上传时间:2022-10-03 格式:DOCX 页数:111 大小:1.58MB
下载 相关 举报
krkr初级教程..docx_第1页
第1页 / 共111页
krkr初级教程..docx_第2页
第2页 / 共111页
krkr初级教程..docx_第3页
第3页 / 共111页
krkr初级教程..docx_第4页
第4页 / 共111页
krkr初级教程..docx_第5页
第5页 / 共111页
点击查看更多>>
下载资源
资源描述

krkr初级教程..docx

《krkr初级教程..docx》由会员分享,可在线阅读,更多相关《krkr初级教程..docx(111页珍藏版)》请在冰豆网上搜索。

krkr初级教程..docx

[krkr初初级教程]初初级恋爱养成游戏制作入门注意……

开始用一个引擎,就要先明了这个引擎可以做什么。

不是说知道kr可以做avg这样的程度,事实上只要有耐心,就算用kr做slg也是可以实现的。

很多打算入门做avg的mm之前都没有编程基础之类,我遇到的大部分是对画立绘或者写剧本有爱然后转过来的……所以常常会看到这样的问题:

“开始界面怎么做?

这种问题,回答的话就会觉得很无力,因为开始界面和其他的界面没有什么不同,并不是要另外特别输入的什么东西,而只是一张背景图和几个按钮的组合而已。

有些华丽的会加上一些画面效果,但主体就是按钮,只要会做按钮就可以做标题画面,但是似乎常常有人完全不这样想的样子……

在游戏策划阶段,思路上是整体的在想游戏界面和系统,但到写程序的时候,则要把这些界面全部拆分成元素来考虑。

比如一个半即时rpg战斗界面,我的思路就是设定一个timer,设定interval属性,这个属性的作用就是确定在timer为enabled=true时每隔多少时间跳转到ontimer()一次。

在ontimer()里边就可以单位数值的增加时间变量,以及每跳转到这里一次扣除根据各个角色速度计算出来的时间槽减少值,并根据这个变化对应的改变每个角色时间槽内色块的长度。

而当长度为0时[也就是记录速度槽长度的变量为0时]就跳转到该角色的行动模块,行动模块由按钮组成,比如法术,单击了法术按钮后跳转到法术模块,根据人物不同出现法术的选择菜单{依然只是按钮},选择了某个按钮后就清空各个按钮,再播放角色的攻击动画,和敌人的被攻击动画{有时候也不是什么动画,有张图就可以了……|||||}动画播放完毕根据双方攻击力防御力魔功魔防之类计算下敌人的损失[对于游戏平衡来说这里的计算式设定很重要],如果主角有兵器养成之类的设定还可以在主角兵器使用次数变量上加1之类之类,这些都很自由了。

因为主角的兵器养成的效果不是在这里就体现的,而是根据使用次数变量再经过计算体现的,所以这里只要改变次数变量就可以取得相应效果了[而这些效果的模块一般写在其他地方,不要手动去调整所有变量,相互有影响的变量让他自己影响]。

当某角色的hp变量为0时就判断他进入死亡状态,同时的麻痹,

盲目之类的状态也都可以用变量赋值,在ontimer里用if进行各种动作的判断。

就是说,一个战斗界面并不是有三个角色在和三个敌人战斗,而是上方有一些变量控制的色块{当然也可以华丽的用图片},下方有几个人物站立动画,到一定时间会出现按钮。

要做一个这样的界面,需要会的就是1对画面{色块}的长度控制,2动画播放的控制,3按钮的设置,4清晰的变量处理。

如果还想要什么华丽的画面效果的话就再进修一下各种画面动作。

自己分析出这些元素,然后就可以看对应的引擎可不可以做得到,或者自己能不能实现这些功能,到这一步时,对别人的提问才比较有诚意。

什么都不想,直接去问“战斗界面怎么做”“对话界面怎么做”,会让回答的人很为难的,因为要把思路解释清楚很麻烦,看我如此努力的解释一个战斗界面的构成也没讲清楚就知道了……而且每个人的思路也不一样,要实现某个目的想采取的途径也是不一样的。

那么就从kr可以做什么说起。

这里就只讲kag层面,tjs层面应该不会涉及……但是我必须要说的是,kr和ns比较起来,最大的优点就是tjs……就是说,用ns的时候,你发现某个效果做不到,那么基本上就是做不到了,但是kr的话,在kag{功能和ns类似}层面做不到的事情可以用tjs完成,因为tjs对应更基层,也可依据需要自由修改kag的指令内容。

但是这里是初初级入门……就不多谈了……

做一个一般的电子小说,需要的功能有1.画面的插入,精灵的动作控制{如位置设定,移动,渐变之类},2.按钮和标签跳转,3.文字对话的显示,4.save/load功能[就是因为这种东西自己写很麻烦所以才需要直接用引擎……]如果是分歧式电子小说或者要加入养成要素,那就需要5.对变量的控制。

kag[现在开始讲的都是KCDDP的KAGeXpress,其他的版本会有一些指令的不同,推荐使用KAGeXpress,第一是中文,第二是增添了很多方便的指令,可以到去下载]的画面控制分为layer层和Massage层,具体的指令使用方法见docjpn\kag3doc。

layer层主要承担前景图片的插入如人物立绘,使用方法是image,如:

@imagelayer=25page=backstorage="m1"visible=truex=103y=25opacity=255cond="f.月==1"

kr的语句格式一般都是这样,“@指令属性1=xxx属性2=xxx属性3=xxx”或者“[指令属性1=xxx属性2=xxx属性3=xxx]”这两种效果是一样的,但[]后边可以再跟[],@的话那一行就结束了

属性的设定顺序无所谓,可以省略的属性不写也可以,属性能不能省略可以查阅指令集

上边那句话的直译就是就是:

载入图片,在layer第25层[层值越大越上方显示,25层的图片可以覆盖住24-0层和base层,不过这个是由图层的index属性控制,可用layopt更改,KAGeXpress默认0层是100000,每层加100,如layer1就是100100,把layer25的index改成100101的话,它的显示就会在layer1和layer2之间,message层默认是在layer之上的,也可以通过这种方法将message层放在layer层的图片之下。

],在里层[kag的所有层都分为表层和里层,表层是我们能看到的,将图片放在里层再通过trans指令将里层复制到表层可达到各种渐变,淡入等画面效果,如果直接image在表层,则就是瞬间显示。

],图片名叫“m1”[在默认目录下可以不用写路径和后缀,kr支持的图片格式请自己查阅说明,最值得一提的是可以直接用png……也可以用同样有a通道的tlg,kr自带的工具里有将图片转为tlg的工具。

],可见能见[设定为false就是不可见],左上角坐标是103,25,透明度255[范围0-255,0就是完全透明],当变量“f.月”值为1的时候执行[绝大部分kag指令都有cond这个指令,就是在cond=的式子为真时执行整个语句,为假时就当它不存在的跳过,比写if方便多了。

必须注意的是式子格式,“==”“>"这些演算子两边一定要各有一个半角空格……]。

注意,base层插入的图片一定要和窗体大小一样,不然会花屏。

如果m1是动画则不需要多写什么插入后它会自己动作的。

有关于动画,kr的图片动画是单独用asd文件写的[如图片是m1,需要进行截取的动画图片就要叫“m1_a”,然后新建一个文本文件,重命名为m1.asd,具体写法请参阅system\LineBreak.asd],只有image在layer层才能播放动画,pimage和layer是message层都不行。

[KCDDP论坛里有大人写了其他的动画播放插件,讨厌asd或者有需要的人可以去看看]

载入图片后,也有很多方便的指令可以做出各种画面效果,如我前边提到的trans,如果只打算trans一个图层,trans里也有layer属性设定,如果不设定就是将所有图层的里层复制到表层,这种情况下,一般使用[backlay],该指令的意思是瞬间把所有表层复制到里层,使用[backlay]之后再image或freeimage在里层,然后trans的话,就可以达成只有刚操作的那一层出现画面效果的变化。

[trans的layer属性基本上只对base层适用……其他层的话……请死心的使用backlay吧……]

move也是常用的画面操作指令,使用格式是[movelayer=1page=foretime=1000path="(0,0,255)(50,50,100)"]这样,其它也还有一些属性,不设定的话就用默认的,具体参看指令集docjpn\kag3doc。

注意path的移动是从当前layer的位置开始的,比如image时left=300,top=125,move的时候就会从300,125用1000ms移动到0,0,再用1000ms移动到50,50。

第三个位置是透明度,有时候不方便用trans也可以用move不动左上角坐标只动透明度来达成淡入淡出效果。

action也是常用到的指令,具有画面旋转,变形,摇动等多种功能,具体参阅

\kagex\action.txt.

这些指令在执行时如果后便不跟着wait,那么就会一边执行一边直接执行下一语句[比ns方便的地方],但是trans和其他的混用的时候要考虑到fore和back层的变化,比如,fore在被移动的时候trans,back层却没移动……那么trans出来的图片就是back层没移动的样子……另外,同时使用两个trans是不可能的。

move,trans都是对message也适用的指令。

默认message层是message0,比如在文档里直接写入一行“今天天气真好”,那么这行字就会显示在message0上。

设定当前操作的message层是用[currentlayer=message1page=back]这样,注意message层的back有时候是默认不显示的,在第一次用某个message时最好加一句[layoptlayer=message8page=backvisible=true]这样,不然你所载入的东西可能不会显示。

message层承担的主要是文字显示和按钮的功能。

文字的显示就是current之后,在文档里直接写入文字,就会在current的message层左上角的部分开始显示文字,kr有自动换行和自动翻页的功能。

message层的具体设定是使用position这一指令进行的,如:

[positionlayer=message1left=97top=480width=661height=100marginl=0margint=0marginr=0marginb=0opacity=0visible=true]

left和top就是设定改message层的左上角,height和width是高和宽,

marginl,t,r,b则分别是字向内缩进多少像素,opacity是透明度,在message层设定颜色的时候用,不过一般来说,用色块做对话框哪里有图片来的华丽……所以它还有对话框图片载入属性“frame”,在该属性里加入对话框图片的名字就好。

载入后如果想消去就写“frame=""”就可以了……

文字的控制主要有[l]行末等待点击,[p]翻页等待点击,[r]改行,[er]清空该

message层{该层全部清空包括该层的按钮}

文字的字体用font设定,size是大小,face是字体,color是颜色,italic是斜体,bold是黑体,shadow是阴影,edge是镶边,edgecolor和shadowcolor就不用说了……

defstyle设定行间距字距之类的值,这些看指令集可以很容易明白,就不多说了。

kag里的按钮全部是放在message层上的,分为两种:

button和li

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 预防医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1