跳转至

「暴雨中的People In Circle」

嗯...前面的忘记写日志了,就从现在开始补上吧。

心路历程是想要给自制关卡的五面做个道中,主题是暴雨,bgm是Fayzz的《浪人歌谣》,时间为1分11秒开始。因为这首歌非常有在暴雨中漫步的感觉,1分11秒段开始的情绪尤为到位,所以打算在这段加上道中BOSS,乐段结束是1分39秒,约30秒的时长,足够一个符卡了。然后脑中出现了一个打伞的妖精,那么这个符卡的玩法就是躲在暴雨中打伞的妖精的下方来避雨了。 那么首先要解决一些问题。

  1. 暴雨的效果。——已解决,利用白色的激光,调细,有长有短。然后落在画面下端会出现落雨特效。这个是让激光生成时也生成几个隐藏的白色子弹,然后在激光落到下方时生成消弹区域,让白色子弹产生消弹特效以模拟雨落地的效果。
  2. 让部分暴雨变成半透明
  3. 伞挡雨的效果。——已解决。调整了碰撞组,在ext.lua当中添加了UMBRELLA组,然后利用CollisionCheck(INDES,UMBRELLA)来检测激光和伞的碰撞,再在雨的OnColli()方法中添加_Del(self,false)来消除自己。因为雨速度过快会导致雨穿过伞,那么就让伞的碰撞体变大,在伞的上方就让雨接触到伞即可。
  4. 伞的绘制。——刚刚解决。利用Tiled绘制伞的图画,然后导出lua文件,然后再在LuaSTG中读取绘制即可。
  5. 伞弹幕的捆绑。——得让伞作为一个整体移动才行。 已解决
  6. 符卡效果。——这个较为复杂了,目前有很多想法,先添加上吧。
  7. 最一开始撑伞下来的妖精,落到你的头上然后开启符卡,同时开始下雨,然后她会朝一个方向缓慢飞走,接上下一个妖精。
  8. 正常打伞行走的妖精。——要躲在她下面避雨。
  9. 没有打伞行走的散乱妖精。——作为干扰来让玩家躲避,同时增加符卡热闹的感觉。
  10. 一边打伞一边转伞的妖精。——要躲在她下面避雨,也要躲她转伞生成的弹幕。——要解决转伞的问题和妖精转身的问题。
  11. 把伞倒过来乘在里面当坐船飞的妖精——同样也要躲在她下面避雨,但伞会溢出来水,也要躲避。
  12. 踩水玩的妖精,最后会带着水飞起来飞走。——踩水的时候会生成没有威胁的弹幕,但是带着水转圈起飞时会生成螺旋直线弹幕形成威胁。
  13. 捏他雨中曲的妖精——会拿着闭合的伞,一边走一边产生音符,然后生成一个柱子,在柱子上转圈,停下的时候洒下一圈音符弹幕,然后离开。
  14. 在雨中结识然后一起走的妖精——纯效果,显热闹。
  15. 两个在彼此环绕旋转(类似拥抱着转圈)的妖精,一边转一边发射爱心。——需要在每次旋转半圈时调整彼此的图层优先级

那么,这篇日志就从3的部分开始写了。

Tile里面画了个伞 pmJPGzd.png

游戏里看起来不太好

pmJPYQA.png

pmJPtsI.png

pmJPNLt.png

这个看起来还不错。但我还想调整一下Tiled读取参数的接口,让不同的Layer对应不同的弹幕,这样可以让最顶上的那一块变成middle_ball,可以让伞看起来圆一点。

但先搞定绑定功能吧。

似乎在生成实例的时候,会自动将last绑定为上一个生成的实例,在Objcet下面有一个Set Parent,可以用来绑定父子关系。

新建了个object,然后在里面生成伞,然后在生成伞的时候设置一下Set Parent,把伞点自己的位置传递一下,然后再在伞内部新增一个循环,用SetRelativePosition持续设置自己的位置为传递进来的位置,就能保证伞与object绑定了。如果要修改伞的位置的话,就在SetRelativePosition里面改位置吧,加上算出来的值即可。

pmJPaeP.png

增加了入场妖精,时机非常完美,在妖精内部绑定伞即可。

pmJPddf.png

pmJPwo8.png

现在有了个问题。 妖精向上移动的时候,因为速度较快,用来生成特效的米弹会直接穿过伞。

哦没事了,原来是因为Stay on Create 点了false,然后速度又太快,所以当时还没生成碰撞判定就已经到屏幕下半边了。 所以我在想,其实可以让雨走到屏幕下边的时候再生成米弹,然后原地消除,这样就可以有特效的同时也不会让判定变奇怪了。 如果让Stay on Create点了true,会在顶端有雾化效果,其实挺好看的,像是云一样,但也有点喧宾夺主,要么想办法把雾化消除掉,要么就用上一种方法吧, pmJPDJg.png

似乎如果让米弹一出现就消弹的话会出现很好看的星星点点效果。(Stay on Create == false)

(Stay on Create == true)则会额外出现雾化效果。

让米弹先关闭碰撞,再在屏幕下端打开碰撞的办法也不行,因为这样也会穿过雨伞,让角色没办法躲在雨伞正下方的最下面。

注释掉了boss_system里面的PlaySound('cat00', 0.5),让下雨开符卡的时候没有声音了,但是感觉效果也不太好,要不然让符卡提前开出来,然后过一阵子再下雨也行。

想着能不能新增一个碰撞组,然后让消弹结界新增该碰撞组进行消弹,于是在Lobject.lua新增了 GROUP_EFFECT = 11,在editor.lua新增了 然而,亲测,虽然确实可以消弹,但如果开启convert to faith的话,可以出现特效并转化为信仰点,如果不开的话,直接没特效。唉,Del函数又封装好了,改不了。

既然stay_on_create开头没有碰撞判定导致会穿过伞,那么我让弹幕在init的时候就self.colli = true呢?

结果:不行。

唉,我查查怎么让雾化效果关闭吧。

哦解决了!在bullet.lua里面有一个bullet:skip_fade_in()方法,在米弹生成的同时bullet.skip_fade_in(self)即可。

顺带一提,把boss_system里面的PlaySound('cat00', 0.5)恢复了,此外,New(spell_card_ef)这个是开符卡的那个文字特效,干脆就直接设置一个if得了。

为了效果,在boss_function里面新增了一个explode_people_in_circle(a),在「暴雨中的People In Circle」里面调用 boss.explode_people_in_circle(self,true) 即可,主要是删除了boss死亡时的爆炸音效和特效


最后更新: June 21, 2026 20:07:46