缘之空吧 关注:559,230贴子:8,291,740
  • 10回复贴,共1

【教程】末末带你玩ONS--第三讲 为穹妹注入灵魂

取消只看楼主收藏回复



1楼2019-03-03 19:29回复
    上一讲我们学会了如何把背景和立绘刷新在显示屏上,这一讲我们就来为我们的穹妹加上灵魂,也就是如何为我们的立绘加上对话框、语音、和表情。光有穹妹一个人还不够,所以还要讲讲怎么样在同一个屏幕上存在多个立绘不冲突。我们先放一张效果图,经过今天这一讲,以及利用前几讲的知识,我们已经可以做到下图的效果了

    请自行脑补背景音乐和对话语音,以及冒爱心泡泡的特效声


    2楼2019-03-03 19:34
    回复
      好了,在这之前,我们先输入一条极其简短的指令:bgm指令,来为我们的游戏添加上bgm。

      使用格式依旧是 bgm "文件路径/文件名" 后面不需要加任何的数字,除了bgm指令外,还有bgmonce指令,用法和bgm指令一样,区别在于bgmonce指令只会播放一次bgm,放完停止。而bgm指令则会不断循环播放bgm,直到下一条bgm指令出现使bgm更换或者出现bgmstop指令,使音乐停止。此外,与bgm指令相关的指令还有 bgmvol NUM (NUM为number的缩写,表明这里应该填入数字,下文全部用缩写代替)用于调节bgm音量,范围是0-5000,单位未知。bgmvol 0 时即没有声音。 bgmfadein NUM和bgmfadeout NUM指令,意思为bgm淡入时间和bgm淡出时间,单位为毫秒,bgmfadein 2000 效果为切换bgm时,音量会从小到大改变,2秒(2000毫秒)后音量达到最大值,bgmfadeout同理。还有一条mp3指令以及其配套指令由于用的不多,故这里不详细说。


      3楼2019-03-03 19:35
      回复
        好了加上背景音乐之后是不是更加有感觉了?(反正你们也听不到,就请自行想象吧),接下来我们来讲一下本讲的重点,对话框的设置,setwindow指令,这是ons里最长的一个指令,拥有最高可达13个指令参数,所幸的是一般整个游戏只会用到一次。我们把这个指令放在最开头的地方

        好的我们来讲一下各个数值的具体意思,我们用一张图来一一对应

        其中的背景图像文件就是对话框的图片,我已经找到了一张图(就是原来缘之空的对话框)


        4楼2019-03-03 19:37
        回复
          好的我们先来随便打上一句话

          注意对话最后面的一个反斜杠"\"代表的是对话停顿,效果跟click相同,当脚本读到对话末端的反斜杠时,画面会暂停并等待单击,单击屏幕后就会执行下一条指令。因为每句话后面都有反斜杠,都可以起到等待的作用,我们把click指令都删掉来看看效果

          我们这里的文字的大小和位置都还是有一点小小的问题,大家按照自己的喜好更改就可以了,楼主自己更改一下,就不截图给大家看了。


          5楼2019-03-03 19:40
          回复
            光有对话还不够,我们还要让穹妹开口说话,那么怎么为穹妹加上语音呢?我们先从素材包里找到语音文件

            一般都是ogg格式或者MP3格式,我们加上一条 dwave指令 具体用法是dwave 音轨编号 "文件路径/文件名"
            音轨即为音频轨道,在同一音轨上只能同时播放一条音频,当有多条音频被载入时,只会播放后载入的音频,所以为了避免语音和音效(如开门声,电话铃声等)发生冲突,楼主一般把对话语音放在0号音轨,把特效音放在1号音轨。用了dwave指令,穹妹就能自己开口说话了,你们自己感受一下


            6楼2019-03-03 19:41
            回复
              楼主先去忙,下次有空再更新,还剩下立绘的表情转换没讲,大家稍安勿躁,楼主很快回来


              7楼2019-03-03 19:44
              回复
                好的现在我们来做一下场景切换,毕竟只有一个场景是不够的,现在我们可以用两种方式进行场景切换,一种是先切换成黑色然后再切换到下一个场景,我们先把场景切换成黑色,我们并不需要一张黑色的背景,黑色和白色都是系统自带的颜色,我们只需输入一句bg black 或者bg white 然后加上效果编号和效果持续时长就可以了。

                当然我们也可以直接切换,那就不需要bg black只领了,直接bg "文件路径/文件名"就可以了


                20楼2019-03-04 22:39
                回复
                  但是需要注意的是,切换场景的时候,立绘是不会随之更新的,我们要让立绘(穹妹)随着背景的切换而消失,这就需要改变立绘的状态,在加载立绘的时候我们用到了 lsp 精灵编号 的指令,要让立绘隐藏,我们可以使用两条指令,一条是"vsp 精灵编号 精灵状态"精灵状态只有两种,一种是显示,用数字1表示,另一种就是隐藏了,用数字0表示

                  例如上图的 vsp 1,0 就是让1号精灵变更状态为隐藏,如果vsp后面直接精灵编号而不加状态的话默认为隐藏,所以可以直接写成vsp 1。还有一种方法是 csp 精灵编号 ,这种方法和vsp的区别是,csp是从内存上删除精灵,而不是令其隐藏。具体区别在于用vsp进行隐藏的精灵可以再次用vsp指令进行显示,而经过csp删除的精灵必须要用lsp指令对其重新加载。最后记得刷新一下,凡是跟精灵 (sp)有关的指令,例如vsp,csp,lsp,都需要用print进行刷新。


                  21楼2019-03-04 22:40
                  回复
                    具体的区别我们用下面这个实例来说明

                    第一次立绘的隐藏与显示,由于使用的vsp指令,故下次要刷新立绘的时候,只需要用vsp 1,1对1号精灵变更为显示状态就可以了,无需再次用lsp载入精灵。而第二次立绘的隐藏和显示,由于使用的csp指令,1号精灵已经从内存上被删除,如果下次要显示立绘的时候用vsp 1,1指令,内存上对于1号精灵的信息已经被删除了,所以无法显示,所以需要用lsp再次对1号精灵进行一次预载入再刷新。


                    22楼2019-03-04 22:43
                    回复
                      这样子之后大家就可以随意的切换背景和妹子以及bgm和对话,已经可以制作galgame的主线剧情了,但是大家会发现这种切换方式,在切换背景的时候立绘的消失总是慢背景一拍,有没有一种方法让立绘和背景同时刷新或者同时消失呢,答案是有的,这就需要我们在上一讲特意没讲的0号特效了,我们做出如下更改

                      0号等待特效的作用是本次屏幕的刷新等待至下一次屏幕刷新一起进行,具体来说就是脚本执行到bg指令的那一行时,由于读到了0号特效,先不会刷新,而是等到下一个刷新指令print的时候,背景和立绘一同刷新在屏幕上,刷新效果继承print的刷新效果。简单说一下怎么更改立绘的表情....emmm其实就是重新在原来的位置上刷新一张新的立绘23333
                      那么经过我们这么多讲,大家应该可以自行制作galgame的简单主线剧情了,其实一点基础都不需要,只要跟着楼主一步一步来,小白也能制作galgame,那么下一讲我们来讲一讲比较高级一点的震荡特效,放大特效,以及特效音的添加,本讲就到这里结束了,我们下一讲再见。


                      23楼2019-03-04 22:45
                      回复