i_wanna_be_the_guy吧 关注:62,553贴子:1,119,249
  • 2回复贴,共1

iw制作相关 打字机效果基础教程

取消只看楼主收藏回复

大家好,这里童话,只是一个学gm没多久的并不会很多东西的家伙,近半年的学习,学会的东西依旧不多,比不上贴吧里大部分游戏制作者,因为他们至少都会有一部自己的作品,而咱没有,至今为止咱的第一部作品都还在难产中,不知道什么时候才能做得出来,但是最近看到贴吧里的帖子都很沉重,要么就是关于作弊的事情,要不就是这样那样的让人并不那么开心的东西,所以咱写了这个帖子,gm打字机效果的教程,并不是一个很难实现的东西,如果有兴趣看的请你继续往下看,如果觉得没兴趣或者太低端的请右上角。
整楼图


IP属地:甘肃1楼2015-04-20 23:46回复
    首先要做一个打字机我们必须先明白打字机是以一种怎么样的机制来实现的,首先我们来看这两个函数
    第一个string_copy(str,index,conut)返回字符串str从指定位置index开始的conut个字符,这个函数我们可以理解为拷贝一个字符串里的一段字符。
    第二个string_ delete(str,index,conut)返回删除字符串str从指定位置index开始conut个的字符,意思大概就是返回一个删除了一段字符串的字符串。
    借助这两个函数我们就可以做到这种效果,拷贝一个添加在绘制的字符串上再删除这一个字符,再拷贝再添加再删除如此循环,但是为了让字符串在删除完所有也就是绘制完所有后停止继续工作我们还要用到一个函数
    string_length(str)返回函数串str的字符个数。
    有了这三个函数我们的思路就很清晰了,用string_length来时刻查询字符串内的字符个数,当字符个数为零的时候函数停止工作,不为零的时候便可以持续工作指导字符个数为零。
    object里的函数可以这样写:
    create:
    cc1=” I love ithere, because this is my home, I have my family here.”;(里面输入的字符可以自定,长度不限,至少咱没找到上限,用于确定输出字符的字符串)
    cc2=””;(初始化一个用于拷贝的字符串,留空即可)
    cc3=””;(初始化一个用于输出的字符串,留空即可)
    alarm[0]=1; (初始化并调动alarm[0],令其在本obj创建的第一时间运行)
    alarm[0]:
    if(string_length(cc1)>0){ (检测字符串cc1的字符个数是否大于零)
    cc2 = string_copy(cc1,1,1); (拷贝字符串cc1的第一个字符到cc2里,第一个1是起始位置,第二个1是拷贝字符的个数)
    cc1 = string_delete(cc1,1,1); (拷贝完毕后删除cc1的第一个字符方便下一次拷贝,第一个1是起始位置,第二个1是删除字符的个数)
    cc3+= cc2; (添加拷贝到cc2里的字符到cc3里并在绘制里输出)
    alarm[0]=5; (下一次运行alarm[0]的延迟时间也就是你字符绘制的间隙时间)
    }
    draw:
    draw_text(x,y,cc3); (在obj位置绘制cc3)
    注:在draw里的绘制方法可以使用gml里讲过的各种绘制文本的方式,不一定局限于draw_text也可以尝试其他的彩色绘制。
    注2:如果你的obj加载了中文输出插件并且打算做中文输出的打字机的话要注意,中文所占的是两个字节,所以你需要吧拷贝和删除的字符数改为 2.
    教程到此结束,如果你觉得好的话请回个帖表示一下支持就好了,这是咱第一次写关于gm的教程,有哪些不好的地方请各位提出,如果有什么不对的地方请各位提出咱会认真修改的,谢谢。


    IP属地:甘肃本楼含有高级字体4楼2015-04-20 23:48
    收起回复
      很抱歉 = =抢楼的删了,咱忘了提醒不要占楼....很抱歉,对不起...


      IP属地:甘肃5楼2015-04-20 23:49
      回复