以前我一直念成藤man4来着。
1. 为什么会有这个需求
某一年,我想做一个飞行射击游戏。这个游戏中的某角色可以操纵荆棘和藤蔓。他(或者是她)在某种射击方式下完全不会发射子弹,而是会生成围绕在自身周围的藤蔓。藤蔓可以消除接触到的特定类型的子弹,并对接触到的敌人持续造成伤害。总之是一种防御性的射击模式。
当角色移动时藤蔓会随之移动。这里我希望的效果不是身边的一团藤蔓整体移动,而是逐渐『生长』到新的位置。换句话说藤蔓既不是附着在世界坐标上也不是附着在角色身上,而是屏幕坐标上。看起来像这样:
大概的效果2. 从第一根藤蔓开始
一团藤蔓就是数条永不停歇的藤蔓围绕一个点生长,所以重点就是如何制作一条藤蔓。最简单的思路是:
- 藤蔓是一段一段连接起来的
- 每隔一小段时间就会从最新的段之前延伸出新的段
- 新生长出来的段会尽量指向目标点,但存在最大偏折角度,避免出现180度转弯之类的不雅行为
- 每一段藤蔓在出生后都会生长一段时间,即便后来它已经不是最新的段了
- 这样设计是为了让藤蔓看起来充满生命力,而不是像流水的痕迹
- 每一段藤蔓出生一段时间后就会萎缩消失
这样做出来的效果是这样的:
单根傻藤藤蔓永远都不能生长到目标点,这是因为:
- 有偏折角度的限制
- 后面的段也在不断生长,导致最初指向目标点的新段之后会越来越偏
这就对了,我本来就不希望它能到目标点上。
3. 让这一根藤蔓更活泼
之前的效果特别像一些刚健朴实的植物,我想要的是更接近野外野蛮生长的藤蔓的效果,所以再加一个限制:
- 每次决定新藤蔓段的指向方向时,加入一个随机的跑偏角度
这样就很像疯长、胡长的样子了:
疯长的单根傻藤4. 多来几根
5根左右藤蔓就可以大概看出围绕的效果。10根时藤蔓的密度就非常令人满意了。当然根数越多藤蔓越密集越厚实。
好多根疯长的傻藤5. 一些想法
做出这个雏形之后有几个小脑洞。
- 首先是给每一段加上纹理,效果就像第一张图一样
- 不分段绘制,而是把藤蔓当作一个完整的网格,处理一下转角、贴一个连贯的纹理可以做出更平滑的藤蔓
- 但我这个demo是纯2d的所以就懒得做了
- 而且这么做的话,平滑藤蔓好做,充满细节(比如尖刺)的藤蔓就更麻烦
- 其实随着藤蔓的延伸出现一些绽开的玫瑰花是我最终想要的效果,但是……
- 我相信大家的脑补能力
- 当目标点快速移动时,藤蔓会集体『追赶』目标点,可以借此实现一些比较暗黑的效果:
- 所以说这个藤蔓的效果也是可以模拟跟随玩家的菌毯的ww
最后放一个速度放慢的版本,这个更接近藤蔓(而非菌毯了):
来个高清的完。
网友评论