Project1

标题: 【教程】小y的RGSS2脚本教程-第二蛋 [打印本页]

作者: yangjunyin2002    时间: 2014-1-16 17:08
标题: 【教程】小y的RGSS2脚本教程-第二蛋


场景篇
                                                                 动手改标题(二)



         呃,由于我的偷懒,现在才法伤第二弹~话说这次教程完全偷工减料,希望众位来交作业哈~
上期教程:(小y的RGSS2脚本第一蛋)http://rpg.blue/thread-345768-1-1.html
上期交作业的人:@gz29767562


       好了,废话咱就不罗嗦,开始讲吧~
       好了,首先我们先看到scene_title,上次我们修改到了背景。但是,今天,我要给大家一个很华丽的效果。
那就是背景移动!
       不过呢,大家要准备的背景最好是可循环的,比如默认的远景图素材里的蓝天,就是左右是循环播放和吻合的。
  1. 我们上期还说到了合并。即简化脚本。所以,我们先看到开始处理:
  2.   def start
  3.     super
  4.     load_database                     # 载入数据库
  5.     create_game_objects               # 生成游戏对象
  6.     check_continue                    # 判断继续是否有效
  7.     create_title_graphic              # 生成标题画面图像
  8.     create_command_window             # 生成指令窗口
  9.     play_title_music                  # 播放标题画面音乐
  10.   end
复制代码
我们知道,生成标题画面图像的位置在这儿:
  1.   def create_title_graphic
  2.     [url=home.php?mod=space&uid=114926]@sprite[/url] = Sprite.new
  3.     @sprite.bitmap = Cache.system("天空")
  4.   end
复制代码
就好像等号的作用一样,系统自动开始处理的时候,处理到
  1. create_title_graphic
复制代码
其实就是读取了
  1. def create_title_graphic
复制代码
里的内容,所以,我们现在将它合并:
  1.   def start
  2.     super
  3.     load_database                     # 载入数据库
  4.     create_game_objects               # 生成游戏对象
  5.     check_continue                    # 判断继续是否有效
  6.     @sprite = Sprite.new
  7.     @sprite.bitmap = Cache.system("天空")
  8.     create_command_window             # 生成指令窗口
  9.     play_title_music                  # 播放标题画面音乐
  10.   end
复制代码
而之前的def create_game_graphic就不用了(别忘了删除end)
这样,就合并好了~
同理,我们也把开始处理的其他给合并一下:
  1.   def start
  2.     super
  3.     load_database                     # 载入数据库
  4.     create_game_objects               # 生成游戏对象
  5.     @continue_enabled = (Dir.glob('Save*.rvdata').size > 0)
  6.     @sprite = Sprite.new
  7.     @sprite.bitmap = Cache.system("天空")
  8.     create_command_window             # 生成指令窗口
  9.     play_title_music                  # 播放标题画面音乐
  10.   end
复制代码
就先这样吧,当然,如果全部合并的话开始处理就会很乱了(内容太多)
好了,再来看到update吧,意思是更新。
就像并行处理一样,update会每时每刻自动的刷新里面的内容。
好了,我们在更新里加入这一句:
  1. @sprite.ox += 4 if Graphics.frame_count % 2 == 0
复制代码
这是什么意思呢?sprite其实是刚才那个标题画面图片sprite的在脚本中的名字。
ox则是图片的x,我就不多说了。
此时,我们会看到这种效果:

图片直接滚动走了!那怎么办?我们先别急,先确定下图片的大小。
标题图片的大小,png格式的可以直接看到,jpg的话可以借助图片查看器或者是图片编辑工具(如PS、美图秀秀什么的)去看看。
我是直接把他转成png形式的了。
我的标题图片大小是640X640,所以,我们在开始处理里加上几句,变成这样:
  1.   #--------------------------------------------------------------------------
  2.   # ● 开始处理
  3.   #--------------------------------------------------------------------------
  4.   def start
  5.     super
  6.     load_database                     # 载入数据库
  7.     create_game_objects               # 生成游戏对象
  8.     @continue_enabled = (Dir.glob('Save*.rvdata').size > 0)
  9.     @sprite = Plane.new(Viewport.new(0, 0, 640, 640))
  10.     @sprite.bitmap = Cache.system("天空")
  11.     create_command_window             # 生成指令窗口
  12.     play_title_music                  # 播放标题画面音乐
  13.   end
复制代码
现在图片是plane.new
这是什么意思呢,为什么要这么换?
我们看到编辑器里的Spriteset_Map脚本。
  1.   def create_parallax
  2.     @parallax = Plane.new(@viewport1)
  3.     @parallax.z = -100
  4.   end
复制代码
怎么样,懂了吧?
现在我们的图片可是循环着滚动了哦~~~
由于静态图片显示不出效果所以在这里我就不截图了~~
另外顺便注意一下,之前的640,640是自己标题图片的大小。

现在的效果很酷吧?我们可以仿照这个,再做个动态效果试试吧~~不过我懒得试了。。
然后呢,我们来让标题画面的选项滑动进入吧~
上次我们选项窗口的y坐标貌似是348?我们先说说如何从下面滑动出现。
先改下坐标,使窗口先离开屏幕~
  1.     @command_window.y = 448
复制代码
好了,我们再次看到update。记得这种滑动效果我以前编写的一个菜单脚本里就有这种效果。
加上这一句:
  1.     if @command_window.y <= 348
  2.     else
  3.       @command_window.y -= 2
  4.     end
复制代码
其中348是原来窗口的y坐标。我们之前说过if是判定意思。
这个判定句意思是如果这个选项窗口的y坐标小于(或等于)348,那么就什么都不做,否则他的y坐标就-2.
为什么-2呢?因为这是update,可以一直判定。这个2如果改的很大的话,那就会很突然。

好了,效果如图:


对了,既然我们的标题图都滚动的了,那标题文字怎么办呢?
别担心,这样做:
标题的图片就是单纯一个背景图。而标题文字另外做一张图,背景为透明。
然后命名。
  1.     @sprite = Sprite.new
  2.     @sprite.bitmap = Cache.system("天空")
复制代码
然后仿照这一句在开始处理里再加上,我们举个例子,
标题文字的图片文件名为“文字”,然后我们可以这么写:
  1.     @titletext = Sprite.new
  2.     @titletext.bitmap = Cache.system("文字")
复制代码
这里文字的那个定义名是titletext,也可以换成其他的。
当然别忘了在结束处理那里加上:
  1.     @titletext.bitmap.dispose
  2.     @titletext.dispose
复制代码
注意,这里的titletext必须和前面显示图片哪里一样
我举例用的是titletext,也可以换其他的。


好了本期就是这样,其他等会儿我再编辑
作者: kava    时间: 2014-1-17 20:10
好腻害!请问为何要将create_title_graphic里的内容合并到start内?
作者: gz29767562    时间: 2014-1-17 22:23
本帖最后由 gz29767562 于 2014-1-17 22:24 编辑

还是出慢点好,呵呵,好然我研究几天
作者: 廢柴郡    时间: 2014-1-17 22:30
好东西!
作者: が冷胤轩ゎ    时间: 2014-1-26 08:40
怎么开.........





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1