环绕在角色身边的藤蔓

以前我一直念成藤man4来着。

1. 为什么会有这个需求

某一年,我想做一个飞行射击游戏。这个游戏中的某角色可以操纵荆棘和藤蔓。他(或者是她)在某种射击方式下完全不会发射子弹,而是会生成围绕在自身周围的藤蔓。藤蔓可以消除接触到的特定类型的子弹,并对接触到的敌人持续造成伤害。总之是一种防御性的射击模式。

当角色移动时藤蔓会随之移动。这里我希望的效果不是身边的一团藤蔓整体移动,而是逐渐『生长』到新的位置。换句话说藤蔓既不是附着在世界坐标上也不是附着在角色身上,而是屏幕坐标上。看起来像这样:

大概的效果

2. 从第一根藤蔓开始

一团藤蔓就是数条永不停歇的藤蔓围绕一个点生长,所以重点就是如何制作一条藤蔓。最简单的思路是:

  • 藤蔓是一段一段连接起来的
  • 每隔一小段时间就会从最新的段之前延伸出新的段
  • 新生长出来的段会尽量指向目标点,但存在最大偏折角度,避免出现180度转弯之类的不雅行为
  • 每一段藤蔓在出生后都会生长一段时间,即便后来它已经不是最新的段了
    • 这样设计是为了让藤蔓看起来充满生命力,而不是像流水的痕迹
  • 每一段藤蔓出生一段时间后就会萎缩消失

这样做出来的效果是这样的:

单根傻藤

藤蔓永远都不能生长到目标点,这是因为:

  1. 有偏折角度的限制
  2. 后面的段也在不断生长,导致最初指向目标点的新段之后会越来越偏

这就对了,我本来就不希望它能到目标点上。

3. 让这一根藤蔓更活泼

之前的效果特别像一些刚健朴实的植物,我想要的是更接近野外野蛮生长的藤蔓的效果,所以再加一个限制:

  • 每次决定新藤蔓段的指向方向时,加入一个随机的跑偏角度

这样就很像疯长、胡长的样子了:

疯长的单根傻藤

4. 多来几根

5根左右藤蔓就可以大概看出围绕的效果。10根时藤蔓的密度就非常令人满意了。当然根数越多藤蔓越密集越厚实。

好多根疯长的傻藤

5. 一些想法

做出这个雏形之后有几个小脑洞。

  • 首先是给每一段加上纹理,效果就像第一张图一样
  • 不分段绘制,而是把藤蔓当作一个完整的网格,处理一下转角、贴一个连贯的纹理可以做出更平滑的藤蔓
    • 但我这个demo是纯2d的所以就懒得做了
    • 而且这么做的话,平滑藤蔓好做,充满细节(比如尖刺)的藤蔓就更麻烦
  • 其实随着藤蔓的延伸出现一些绽开的玫瑰花是我最终想要的效果,但是……
    • 我相信大家的脑补能力
  • 当目标点快速移动时,藤蔓会集体『追赶』目标点,可以借此实现一些比较暗黑的效果:
迫近的黑暗
  • 所以说这个藤蔓的效果也是可以模拟跟随玩家的菌毯的ww

最后放一个速度放慢的版本,这个更接近藤蔓(而非菌毯了):

来个高清的

完。

你可能感兴趣的:(环绕在角色身边的藤蔓)