成就中心 DouJin Terraria! 社区服务 统计排行 帮助
  • 8901阅读
  • 14回复

[制作范例]东方原作弹幕模仿——波与粒的境界

发帖
130
信仰
6
蓝点
114
符卡
0
制作弹幕的上手往往都是从模仿而来。而ZUN神主的原作弹幕,正是绝佳的模仿对象。

本系列帖子通过对原作弹幕的观察与分析,尽力做到对原作弹幕形状与特性的模仿。
弹幕的实现方式千变万化,本系列帖子也只是探索其中的一种实现办法而已;
而对于弹幕的具体参数,也难做到准确细致,只能尽力而为。
P.S.:有些弹幕的设计之巧正在于参数的设计,因此也不能轻视了参数的调整。

关于模仿的步骤,自己的做法大概是这样:
1.获取弹幕符卡的视频,有fraps录的话最好~
2.将弹幕中的子弹归类,并找每类子弹的一个个体进行观察
弹幕通常都由大量子弹构成,很容易看花,如果盯紧了一个子弹去观察,会取得比较好的效果~
注意子弹的速度、方向变化及事件
视频的步进功能也是非常有用的,无论是观察运动规律,还是后面的参数设定
3.将初步的观察结果总结,并进行测试;
测试一方面是验证自己的思路是否正确,如果感觉方向不对头的话就要换换思路了
另一方面,参数的设定也要建立在测试的基础上

下面开始正题~



引用
波与粒的境界,原版在东方文花帖EX里,是 5WAY 的弹幕。

一个叫 ASL 的玩家,在一年前上传了关于这个符卡的REPLAY。
在这段录像里,体现了 ZUN 的一处设计或者巧合,使得此符卡正好可以上下封印。
如果初始参数偏那么一点,就封死了存活的可能性。

(ASL 是东方永夜抄EX分数结界组排行榜冠军。)


观察:

整个弹幕只由一种子弹构成。子弹在发射之后,一直保持匀速直线运动,可以推测子弹本身并无事件;
同时,子弹的发射点也固定为场地中央(虽然阿紫一直在动),且所有子弹发射初速度均相同,只是子弹发射的角度不同。
每次分5个方向发射子弹,每个方向发射规律相同,间隔角度固定为72度。

因此只要得到了一个方向上子弹发射角度变化的规律,就可以模仿出这个弹幕的形状了。

此SC给人最深刻的印象便是转速由快至慢,之后倒转,转速又渐渐变快,如此循环;转速慢时子弹聚在一起,仿佛像波一样;转速快时子弹分散,仿佛又有了粒的性质。
因此我们可以推测,使用一个变量表示角速度,不断地改变这个变量的数值(由正数x慢慢变为负数x,再由负数x慢慢变回正数x),或许就可以实现。
通过测试,感觉角速度的变化为线性比较合适,即角速度与时间呈线性关系,发射角度与时间呈二次方关系。

* 改进:
考虑到一个生活中经常见到的场景:汽车加速行驶而过,轮子看上去却是倒着转的;只因为轮子转得太快,产生了视觉误差。就好比轮子在一瞬间旋转了359度,你不会感觉到这个轮子已经转了接近一圈,而是感觉到这个轮子反转了1度。
因此,角速度只要不断地增加,即可达到一会加速旋转,一会减速旋转,一会正转,一会倒转的效果。

* 思路二:
“由正数x慢慢变为负数x,再由负数x慢慢变回正数x” 同时也是三角函数的特性。因此将发射角度表达为帧数的三角函数(sin或cos)同样也是可行的方案。

GameMaker实现的思路一代码如下:

//初始化:
angleV=0;              //初始化角速度
dir=0;                     //初始化发射角度

//每步执行代码:
angleV+=0.0375;   //角速度不断线性增加
dir+=angleV;          //计算出发射角度

//之后是发射子弹
var i;
i=0;
repeat 5{
    with instance_create(yukari.x,yukari.y,bulletRice){
        speed=2.25;
        direction=i*72+other.dir;    //每个方向相差72度
        image_angle=direction;
        image_index=PURPLE;
    }
    i+=1;
}


回想一下,在固定发射位置、固定发射速度、无子弹事件的情况下,仅仅对发射方向进行了简单变化,就做出了如此丰富多彩的效果,足见此符卡设计的巧妙之处~

附上gamemaker实现一份,带源码


115
按i切换无敌,r重启
get的话会有奖图一张~

重要的发射子弹代码均在objects->sc->sc1->sc1Assist 这个object里
[ 此帖被萃香西瓜在2011-01-31 19:41重新编辑 ]
本帖最近评分记录: 5 条评分 蓝点 +6 隐藏
aquatoney 蓝点 +2 2011-01-31 密切关注,总要用上
六魂 蓝点 +1 2011-01-31 -
franniss 蓝点 +1 2011-01-28 -
eee 蓝点 +1 2011-01-28 支持
stupidfan 蓝点 +1 2011-01-27 好玩~
发帖
392
信仰
5
蓝点
329
符卡
0
只看该作者 沙发  发表于: 2011-01-27
这个很神奇呀
发帖
16
信仰
0
蓝点
0
符卡
0
只看该作者 板凳  发表于: 2011-01-28
密切关注此贴!
发帖
661
信仰
0
蓝点
651
符卡
0
只看该作者 地板  发表于: 2011-01-28
描述的很好呢,西瓜辛苦
发帖
3
信仰
0
蓝点
1
符卡
0
只看该作者 4楼 发表于: 2011-01-31
这要在GM的那个区域才能看到这个代码
发帖
661
信仰
0
蓝点
651
符卡
0
只看该作者 5楼 发表于: 2011-01-31
欢迎歪兄~ 我贴个查看法。
发帖
661
信仰
0
蓝点
651
符卡
0
只看该作者 6楼 发表于: 2011-01-31
GameMaker 范例中的代码和变量查看方法
发帖
3
信仰
0
蓝点
1
符卡
0
只看该作者 7楼 发表于: 2011-01-31



改了个EASY版
本帖最近评分记录: 1 条评分 蓝点 +1 隐藏
franniss 蓝点 +1 2011-01-31 -
发帖
661
信仰
0
蓝点
651
符卡
0
只看该作者 8楼 发表于: 2011-01-31
好。那么查看变量是没问题了。
有制作方面问题和想法,往本版贴就是。

优点:存东西方便,好修改,专门向,专人管理。
发帖
286
信仰
0
蓝点
157
符卡
0
只看该作者 9楼 发表于: 2011-01-31
恩~好玩。

我之前构想过这个弹幕的实现方法,似乎跟西瓜描述的一样~
描述
快速回复

您目前还是游客,请 登录注册
如果您在写长篇帖子又不马上发表,建议存为草稿
认证码:
      () {} []