【四圣龙神录的编程教室】第16章、来制作洩矢大人的弹幕吧

原文地址:

http://dixq.net/rp/16.html


因为之前已经做好了固定的模式,所以弹幕的添加就变的很容易了。

这次只要把弹幕函数进行改动就行了。

我们就用shot_bullet_H008来实现洩矢大人的弹幕吧。

【洩矢大人】这个弹幕是东方风神录EX面的最后一个弹幕。 不太清楚的人看下面的视频来确认一下吧。(对不起,原文给nico的地址我打不开,只好发b站的了)

http://www.bilibili.tv/search?keyword=%E9%A3%8E%E7%A5%9E%E5%BD%95+ex&orderby=&formsubmit=

很意外的是,EX面的最后一个弹幕是这么简单的实现的,这么说的话东方厨们也许会不高兴,

但我们还是来简单的实现一个相似的弹幕来吧。

————————————————————————————————————————————————————————————————————————

---- shotH.cpp里添加如下代码 ----


//崇符【洩矢大人】
void shot_bullet_H008(int n){
    int t=shot[n].cnt;
    int k;
    if(t>=0 && t<1200 && t%90==0){
        double angle=rang(PI);
        for(int j=0;j<2;j++){//在中途分裂成两部分
            for(int i=0;i<60;i++){//每部分60个
                if(shot[n].flag!=2 && (k=shot_search(n))!=-1){
                    shot[n].bullet[k].knd    =8;//第八号子弹
                    shot[n].bullet[k].angle  =angle+PI2/60*i;//圆形 60个
                    shot[n].bullet[k].flag   =1;
                    shot[n].bullet[k].x      =enemy[shot[n].num].x;
                    shot[n].bullet[k].y      =enemy[shot[n].num].y;
                    shot[n].bullet[k].col    =4;//四号颜色
                    shot[n].bullet[k].cnt    =0;
                    shot[n].bullet[k].state  =j;//状态。根据是0还是1来区分旋转方向
                    shot[n].bullet[k].spd    =2;
                }
            }
        }
        se_flag[0]=1;//发射音效
    }
    for(int i=0;i<SHOT_BULLET_MAX;i++){//所有子弹
        if(shot[n].bullet[i].flag>0){//有注册了的子弹的话
            int state=shot[n].bullet[i].state;
            int cnt=shot[n].bullet[i].cnt;
            if(30<cnt && cnt<120){//在 30 -120 的时间内
                shot[n].bullet[i].spd-=1.2/90.0;//速度减少 1.2/90
                shot[n].bullet[i].angle+=(PI/2)/90.0*(state?-1:1);//倾斜90度/90
            }
        }
    }
}

————————————————————————————————————————————————————————————————————————

子弹的编号在 bullet 文件夹里可以找到和子弹编号一样的图片,来确认下。


(b8.png)

最左边的是0号的话,颜色编号为1号的就是水珠的颜色,颜色就指定为1号吧。

这里要传0或者1给state参数,洩矢大人的弹幕在一个地方会发射2个子弹,

中途会变成2个轨道。

在那里,你会看到,状态为0的弹幕会往角度的正方向变化,状态为1的弹幕相反。

shot[n].bullet[i].angle+=(PI/2)/90.0*(state?-1:1);

代入这里。问号是条件运算符,不知道的去谷歌一下吧。

这样做的话,两种角度的弹幕就出来了。

/カウンタ 移動パターン 敵の種類 x座標 y座標 スピード 発射時間 弾幕種類 弾の色 体力 弾種類 待機時間 アイテム1 2 3 4 5 6
/cnt pattern knd x y sp bltime blknd col hp blknd2 wait item_n          
60 9 0 200 150 0 60 8 1 100 0 1200 0 -1 -1 -1 -1 -1

运行结果

http://dixq.net/rp/swf/16.swf


本人CSDN博客目录:

http://blog.csdn.net/tidus5


展开阅读全文
©️2020 CSDN 皮肤主题: 大白 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值