弾幕のプチテストプレイその4

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
jay

弾幕のプチテストプレイその4

#1

投稿記事 by jay » 15年前

現在シューティングゲームを制作中です。
龍神録の仕様で弾幕のコードを書きますので、コピペしてプレイしてみて下さい。
プレイした後で指摘、感想、意見等よろしくお願いします。

void boss_shot_bulletH035(){
int i,k,t=boss_shot.cnt;
double angle=bossatan2();
if(t%5==0){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd =5;
boss_shot.bullet[k].col =0;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =PI/2+(0.1*t);
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =1.5;
boss_shot.bullet[k].state =0;
se_flag[0]=1;
}
}
if(t%4==0){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd =5;
boss_shot.bullet[k].col =1;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =PI*1.5-(0.2*t);
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =1.9;
boss_shot.bullet[k].state =0;
se_flag[0]=1;
}
}
if(t>=780 && t%120==0){
for(i=0;i<24;i++){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd =5;
boss_shot.bullet[k].col =2;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =angle+PI2/24*i;
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =2.4;
boss_shot.bullet[k].state =0;
}
}
}

for( int i = 0; i < BOSS_BULLET_MAX; i++ ){
if( boss_shot.bullet.flag > 0 && boss_shot.bullet.state == 0 ){
double x=boss_shot.bullet.x;
double y=boss_shot.bullet.y;
// 右の壁にぶつかっているか
if( x > FMX-9 ){
boss_shot.bullet.x = 0;
boss_shot.bullet.state = 1;
}

// 左の壁にぶつかっているか
if( x < 9 ){
boss_shot.bullet.x = FMX-9;
boss_shot.bullet.state = 1;
}
}
}
}

この弾幕はステージ4のボスが使う予定です。
そのこともふまえて、指摘、意見等よろしくお願いします。

チルチル

Re:弾幕のプチテストプレイその4

#2

投稿記事 by チルチル » 15年前

第一印象は単調すぎて退屈ですね・・

見たところ「ヤマトトーラス」ですが
スコアボードに隠れる前に消えるのは違和感が凄いです
なのでスコアボードの外に入ったらスコアボードの外に移動させて欲しいです

それから何が起きているかわかりにくいので
円形発射とかより何かの形にするか色を変えた方が良いと思います

あとコピーするだけなので問題は無いですが
一応コードはタグで囲んだ方が良いですよ

jay

Re:弾幕のプチテストプレイその4

#3

投稿記事 by jay » 15年前

ヤマトトーラス、確か八坂神奈子のスペカだったか・・・
でもノーマルシューターの僕は見たことがありません。

>第一印象は単調すぎて退屈ですね・・
繋ぎだからむしろ退屈でいいのです。
繋ぎのインパクトが強すぎたらメインの影が薄れるから・・・

>円形発射とかより何かの形にするか色を変えた方が良いと思います
円形発射なら、それこそ495の波紋みたいになります

とりあえず、アレンジを二つ程考えたのでコードを乗せてみますね。
あとタグとか分かりません、ごめんなさい。

一つ目
void boss_shot_bulletH019(){
int k,t=boss_shot.cnt;
double angle=bossatan2();
if(t%4==0){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd =5;
boss_shot.bullet[k].col =0;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =rang(PI2/7)+PI2/10*t;
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =1.5+rang(0.2);
boss_shot.bullet[k].state =0;
se_flag[0]=1;
}
}
if(t>=360 && t%4==0){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd =5;
boss_shot.bullet[k].col =1;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =rang(PI2/7)+PI2/10*t;
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =1.8+rang(0.3);
boss_shot.bullet[k].state =0;
se_flag[0]=1;
}
}
if(t>=840 && t%4==0){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd =5;
boss_shot.bullet[k].col =2;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =rang(PI2/7)+PI2/10*t;
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =2.1+rang(0.4);
boss_shot.bullet[k].state =0;
}
}
if(t==360 || t==840)
se_flag[1]=1;


for( int i = 0; i < BOSS_BULLET_MAX; i++ ){
if( boss_shot.bullet.flag > 0 && boss_shot.bullet.state == 0 ){
double x=boss_shot.bullet.x;
double y=boss_shot.bullet.y;
// 右の壁にぶつかっているか
if( x > FMX ){
boss_shot.bullet.x = 0;
boss_shot.bullet.state = 1;
}

// 左の壁にぶつかっているか
if( x < 0 ){
boss_shot.bullet.x = FMX;
boss_shot.bullet.state = 1;
}
}
}
}

二つ目
void boss_shot_bulletH020(){
int i,k,t=boss_shot.cnt;
double angle=bossatan2();
if(t%5==0){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd =5;
boss_shot.bullet[k].col =0;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =PI/2+(0.1*t);
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =1.5;
boss_shot.bullet[k].state =0;
se_flag[0]=1;
}
}
if(t%5==0){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd =5;
boss_shot.bullet[k].col =1;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =PI/2-(0.1*t);
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =1.5;
boss_shot.bullet[k].state =0;
se_flag[0]=1;
}
}
if(t%6==0){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd =5;
boss_shot.bullet[k].col =0;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =PI*1.5+(0.1*t);
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =1.9;
boss_shot.bullet[k].state =0;
se_flag[0]=1;
}
}
if(t%6==0){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd =5;
boss_shot.bullet[k].col =1;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =PI*1.5-(0.1*t);
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =1.9;
boss_shot.bullet[k].state =0;
se_flag[0]=1;
}
}

if(t>=660 && t%120==0){
for(i=0;i<6;i++){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd =5;
boss_shot.bullet[k].col =2;
boss_shot.bullet[k].x =boss.x;
boss_shot.bullet[k].y =boss.y;
boss_shot.bullet[k].flag =1;
boss_shot.bullet[k].angle =angle;
boss_shot.bullet[k].cnt =0;
boss_shot.bullet[k].spd =2.0-i*0.1;
boss_shot.bullet[k].state =0;
}
}
}

for( int i = 0; i < BOSS_BULLET_MAX; i++ ){
if( boss_shot.bullet.flag > 0 && boss_shot.bullet.state == 0 ){
double x=boss_shot.bullet[i].x;
double y=boss_shot.bullet[i].y;
// 右の壁にぶつかっているか
if( x > FMX-9 ){
boss_shot.bullet[i].x = 0;
boss_shot.bullet[i].state = 1;
}

// 左の壁にぶつかっているか
if( x < 9 ){
boss_shot.bullet[i].x = FMX-9;
boss_shot.bullet[i].state = 1;
}
}
}
}

チルチル

Re:弾幕のプチテストプレイその4

#4

投稿記事 by チルチル » 15年前

何ででしょうね、避けていて楽しくないです・・

とりあえず最初のばら撒きかたが汚い気がします
何かしらの規則性が見て取れる感じが欲しいですね

あと反射にしても移動にしても
もう少し画面外まで行って欲しいです
微妙にはみ出ている気がしますから

と言うより弾幕としての印象が薄いです
前置きが無かったら1と2の違いに気付くのに時間が掛かる気がしますので

それからタグに関しては規約の1つなので
省略する事はできないようです

通りすがり

Re:弾幕のプチテストプレイその4

#5

投稿記事 by 通りすがり » 15年前

わざわざトピ立ててみんなに見てもらおうというのに
「別に退屈な弾幕でいいのです、つなぎの弾幕だから」ってどうなの・・。

しかもタグとか解りませんじゃなくて規約ちゃんと読みましょう。

どうせ見てもらうならきちんと作ったもの見てもらったらどうですか?

Dixq (管理人)

Re:弾幕のプチテストプレイその4

#6

投稿記事 by Dixq (管理人) » 15年前

>> jayさん

こんにちは。
スペルとスペルの間のつなぎということでしょうか?

跳ね返りなら、画像の中心が画面の端に差し掛かった時折り返してはどうでしょう?
後、もし色を変えるなら跳ね返った時に変えてはどうでしょう?

--------------------

関係ない話ですが、最近弾幕作りしてないな~と思っているとこんなもの見つけました。
龍神録の館作ってた頃作った物です。

http://dixq.net/zip/Ryujin_Rockon.zip

館にロックオン機能付けて、新たに弾幕2種類作った物です。

Zボタンを押しっぱなしで溜める・・。緑の丸範囲まで近づけるとロックオンになり、
Zボタンを離すとホーミング発射です。

ちなみに900からボス弾幕です。
弾幕はあまり目新しくはないですが・・。

何かこんなものでも弾幕作りの刺激になればどうぞ・・。(ならんか^^;


--------------------

チルチル

Re:弾幕のプチテストプレイその4

#7

投稿記事 by チルチル » 15年前

>jayさん

そういえば色を変えた方が良いって言いましたけど
反射した時に変わるとかじゃなくて撃つ方向によって色を変えて
反対から出てきた事をアピールしてみてはどうですかって意味でした

>管理人さん

おお、これは凄いですね
私には十分刺激になりましたよ

ところで円が2つ表示されていますけど
どこまで溜まっているのかゲージ的な物が見当たらないのですが・・

とりあえず5秒ほど押しっぱなしにしてみましたが
ホーミング的な事はしてくれなかったです・・

私としては目新しい弾幕で楽しかったですよ
余裕のある時に番外編として龍神録の館に加えてみてはどうですか?

ところで

>館にロックオン機能付けて~



Zボタンを押しっぱなしで~

の間に何かあるんでしょうか?

何かが読み込めてないようなアイコンが出ているのですが・・

Dixq (管理人)

Re:弾幕のプチテストプレイその4

#8

投稿記事 by Dixq (管理人) » 15年前

あ~暇つぶしに作ったようなものなので、
全然ちゃんと出来ていませんので^^;
ためるといっても溜めているようなエフェクトは出ません・・。

敵の近くに一度行けばその敵をロックオンしますので、
その状態ならどこにいてもしばらくZを押して離せばホーミングして弾を発射すると思います。

こんなものも出来るかな~というただの試作です。
円も赤円内だともっと激しい弾の出し方にしようと思いましたが、作ってるうちに飽きたのでそのまま放置です(笑

> 何かが読み込めてないようなアイコンが出ているのですが・・

あれ、ブログの画像直リンクできないんですかね、うちの環境では表示されるんですが^^;
ではうちのサーバーに画像移しておきました。

ひよこ

Re:弾幕のプチテストプレイその4

#9

投稿記事 by ひよこ » 15年前

Dixqさんすごい・・・私にはここまで作れませんよ。
いい刺激になります。

Dixq (管理人)

Re:弾幕のプチテストプレイその4

#10

投稿記事 by Dixq (管理人) » 15年前

いやいや、ひよこさんの年齢を知りませんが、
きっと私がひよこさんの年齢の時は作れませんでしたよ。

「爽快感」ってどうやったら出せるんだろうと試行錯誤したものの、難しいですね・・。

研究会で爽快感あるゲームを作るにはみたいなの分析図で導いたような気がしますが、
理屈ばかりじゃうまくいかないこと多いですね~^^;

チルチル

Re:弾幕のプチテストプレイその4

#11

投稿記事 by チルチル » 15年前

おお、表示されました
こういう感じになっていたんですね

敵の近くに行くとロックオンされるんですか
演出もかっこよくて良いですね

jay

Re:弾幕のプチテストプレイその4

#12

投稿記事 by jay » 15年前

Dixqさん
>スペルとスペルの間のつなぎということでしょうか?
その通りです、分かりにくかったですか?

>何かこんなものでも弾幕作りの刺激になればどうぞ・・。
zipですか・・・、明日学校で開いてみますね。
(解凍ソフトダウンロードしようかな・・・)

通りすがりさん
>きちんと作ったもの見てもらったらどうですか?
別に手抜きとか全くしてませんよ。
ただサブがメインより目立ってはいけないという意味です。
それともサブに関して意見をもらってはいけないということですか?

あとタグは規約みて理解しました。
どうもすいませんでした。

チルチルさん
>何かしらの規則性が見て取れる感じが欲しいですね
こんな感じでしょうか?
あっ、画面外に行くようにしてみました。
void boss_shot_bulletH021(){
#define TM021 400
#define    ADIST 80
int i,k,t=boss_shot.cnt%TM021;
static int s;
double angle=bossatan2();
    if(t==0 || t==90) s=30;
    if(t>=1 && t<=60){
        if((k=search_boss_shot())!=-1){
            boss_shot.bullet[k].knd   =5;
            boss_shot.bullet[k].col   =0;
            boss_shot.bullet[k].angle =PI2/120*s;
            boss_shot.bullet[k].x     =boss.x+cos(boss_shot.bullet[k].angle)*ADIST;
            boss_shot.bullet[k].y     =boss.y+sin(boss_shot.bullet[k].angle)*ADIST;
            boss_shot.bullet[k].flag  =1;
            boss_shot.bullet[k].cnt   =0;
            boss_shot.bullet[k].spd   =0;
            boss_shot.bullet[k].state =0;
                se_flag[0]=1;
            }
        s--;
        }

    if(t>200 && t<=260){
        if((k=search_boss_shot())!=-1){
            boss_shot.bullet[k].knd   =5;
            boss_shot.bullet[k].col   =1;
            boss_shot.bullet[k].angle =PI2/120*s;
            boss_shot.bullet[k].x     =boss.x+cos(boss_shot.bullet[k].angle)*ADIST;
            boss_shot.bullet[k].y     =boss.y+sin(boss_shot.bullet[k].angle)*ADIST;
            boss_shot.bullet[k].flag  =1;
            boss_shot.bullet[k].cnt   =0;
            boss_shot.bullet[k].spd   =0;
            boss_shot.bullet[k].state =0;
                se_flag[0]=1;
            }
        s++;
        }
    if(t%100==0){
        for(i=0;i<30;i++){
            if((k=search_boss_shot())!=-1){
            boss_shot.bullet[k].knd   =5;
            boss_shot.bullet[k].col   =2;
            boss_shot.bullet[k].angle =angle+PI2/30*i;
            boss_shot.bullet[k].x     =boss.x;
            boss_shot.bullet[k].y     =boss.y;
            boss_shot.bullet[k].flag  =1;
            boss_shot.bullet[k].cnt   =0;
            boss_shot.bullet[k].spd   =2.8;
            boss_shot.bullet[k].state =1;
                se_flag[0]=1;
            }
        }
    }


    for( int i = 0; i < BOSS_BULLET_MAX; i++ ){
    if( boss_shot.bullet.flag > 0 && boss_shot.bullet.state == 0 ){
        double x=boss_shot.bullet.x;
        double y=boss_shot.bullet.y;
        //発射時間
        if(t==90 || t==290){
            boss_shot.bullet.spd=1.5;
            se_flag[1]=1;
        }

        // 右の壁にぶつかっているか
        if( x > FMX+12 ){
            boss_shot.bullet.x = -12;
            boss_shot.bullet.state = 1;
            }

        // 左の壁にぶつかっているか
        if( x < -12 ){
            boss_shot.bullet.x = FMX+12;
            boss_shot.bullet.state = 1;
            }
        }
    }
}


アレンジというより別の弾幕ですが。
しかし何か物足りない感じがします。

チルチル

Re:弾幕のプチテストプレイその4

#13

投稿記事 by チルチル » 15年前

おお、これはなかなか面白いですね

ところでスペルとスペルの間と言うのは通常攻撃の事ですか?
それともメインとメインの間の引き立てスペルでしょうか?

まあ確かに物足りなさは感じますね
見たところ原因としては全方位発射に近いので
反対に移動しても特に難しくない事ですかね・・

つなぎの弾幕という事であればボスを頻繁に移動させてみてはどうですか?
ボスが同じ場所にいると弾が移動する場所も同じになるので慣れてしまうと思うんですよ

それから弾の発射間隔が短いので画面が常に弾に覆われていて
弾が反対に移動しても特に関係ない感じになってる気がします

そうですね・・例えば方向を徐々に変えて行きながら狭い範囲にばらまきショットを撃った後に
少しの間発射するのを止めて、その間にボスをランダムな方向に移動させる
・・というのを繰り返してみてはどうですか?

まんま「ヤマトトーラス」ですけどjayさんは見た事が無いそうなのでアリかと
これなら反対側から出てきて怖いですしね

jay

Re:弾幕のプチテストプレイその4

#14

投稿記事 by jay » 15年前

チルチルさんのご意見を取り入れつつもう少し改造してみました。
改良になるか改悪してるかは分かりませんが
風神録は一度Lunaで挑んだのですが「のびーるアーム」で撃沈しました。

改造前とどちらがいいですかね?
あと質問の答えは通常攻撃・・・のつもりです。
void boss_shot_bulletH022(){
#define TM022 530
#define    DIST1 35
#define    DIST2 70
#define    DIST3 100
int k,t=boss_shot.cnt%TM022;
static int s;
double angle=bossatan2();
    if(t==0 || t==140 || t==290) s=0;
    if(t==0)
        boss_shot.base_angle[0]=bossatan2();
    if(t>=1 && t<=40){
        if((k=search_boss_shot())!=-1){
            boss_shot.bullet[k].knd   =5;
            boss_shot.bullet[k].col   =0;
            boss_shot.bullet[k].angle =boss_shot.base_angle[0]+PI2/40*s;
            boss_shot.bullet[k].x     =boss.x+cos(boss_shot.bullet[k].angle)*DIST1;
            boss_shot.bullet[k].y     =boss.y+sin(boss_shot.bullet[k].angle)*DIST1;
            boss_shot.bullet[k].flag  =1;
            boss_shot.bullet[k].cnt   =0;
            boss_shot.bullet[k].spd   =0;
            boss_shot.bullet[k].state =0;
                se_flag[0]=1;
            }
        s++;
        }
    if(t==150)
        boss_shot.base_angle[0]=bossatan2();
    if(t>150 && t<=210){
        if((k=search_boss_shot())!=-1){
            boss_shot.bullet[k].knd   =5;
            boss_shot.bullet[k].col   =1;
            boss_shot.bullet[k].angle =boss_shot.base_angle[0]+PI2/60*s;
            boss_shot.bullet[k].x     =boss.x+cos(boss_shot.bullet[k].angle)*DIST2;
            boss_shot.bullet[k].y     =boss.y+sin(boss_shot.bullet[k].angle)*DIST2;
            boss_shot.bullet[k].flag  =1;
            boss_shot.bullet[k].cnt   =0;
            boss_shot.bullet[k].spd   =0;
            boss_shot.bullet[k].state =0;
                se_flag[0]=1;
            }
        s++;
        }
       if(t==300)
        boss_shot.base_angle[0]=bossatan2();
    if(t>300 && t<=380){
            if((k=search_boss_shot())!=-1){
            boss_shot.bullet[k].knd   =5;
            boss_shot.bullet[k].col   =2;
            boss_shot.bullet[k].angle =boss_shot.base_angle[0]+PI2/80*s;
            boss_shot.bullet[k].x     =boss.x+cos(boss_shot.bullet[k].angle)*DIST3;
            boss_shot.bullet[k].y     =boss.y+sin(boss_shot.bullet[k].angle)*DIST3;
            boss_shot.bullet[k].flag  =1;
            boss_shot.bullet[k].cnt   =0;
            boss_shot.bullet[k].spd   =0;
            boss_shot.bullet[k].state =0;
                se_flag[0]=1;
            }
            s++;
        }
    if(t==420)
        move_boss_pos(40,40,FMX-40,130,80, 60);

    for( int i = 0; i < BOSS_BULLET_MAX; i++ ){
    if( boss_shot.bullet.flag > 0 ){
        double x=boss_shot.bullet.x;
        double y=boss_shot.bullet.y;
        int state=boss_shot.bullet.state; 
        //発射時間
    if(state==0){
        if(t==80){
            boss_shot.bullet.spd=1.8;
            boss_shot.bullet.state=1;
            se_flag[1]=1;
        }
        if(t==250){
            boss_shot.bullet.spd=1.3;
            boss_shot.bullet.state=2;
            se_flag[1]=1;
        }
        if(t==420){
            boss_shot.bullet.spd=0.8;
            boss_shot.bullet.state=3;
            se_flag[1]=1;
        }
    }
    if(state==1){
        // 右の壁にぶつかっているか
        if( x > FMX+7 ){
            boss_shot.bullet[i].x = -7;
            boss_shot.bullet[i].state = 2;
            }

        // 左の壁にぶつかっているか
        if( x < -7 ){
            boss_shot.bullet[i].x = FMX+7;
            boss_shot.bullet[i].state = 2;
                }
            }
    if(state==2){
        // 右の壁にぶつかっているか
        if( x > FMX+12 ){
            boss_shot.bullet[i].x = -12;
            boss_shot.bullet[i].state = 3;
            }

        // 左の壁にぶつかっているか
        if( x < -12 ){
            boss_shot.bullet[i].x = FMX+12;
            boss_shot.bullet[i].state = 3;
                }
            }
    if(state==3){
        // 右の壁にぶつかっているか
        if( x > FMX+18 ){
            boss_shot.bullet[i].x = -18;
            boss_shot.bullet[i].state = 4;
            }

        // 左の壁にぶつかっているか
        if( x < -18 ){
            boss_shot.bullet[i].x = FMX+18;
            boss_shot.bullet[i].state = 4;
                }
            }
        }
    }
}

難易度的にも大丈夫でしょうか?
全5ステージ中第4ステージのボスの通常攻撃
という設定で。

チルチル

Re:弾幕のプチテストプレイその4

#15

投稿記事 by チルチル » 15年前

難易度的には大丈夫ですけど
前と比べてどうかと言うと微妙ですね・・

どうも反射系とか移動系って全方位は不向きな気がしてきましたね
いっそのこと咲夜さんの通常攻撃みたいにしてみてはどうですか?

jay

Re:弾幕のプチテストプレイその4

#16

投稿記事 by jay » 15年前

チルチルさん
>例えば方向を徐々に変えて行きながら狭い範囲にばらまきショットを撃った後に
少しの間発射するのを止めて、その間にボスをランダムな方向に移動させる

つまりこういうことでしょうか?
なんかいい感じな気がします。

通常攻撃にしては少々難易度が高い気がしますが・・・
void boss_shot_bulletH023(){
#define TM023 320
int i,k,t=boss_shot.cnt%TM023;
static int s;
if(t==0 || t==100)
        s=0;
    if(t>=0 && t<=60){
        if((k=search_boss_shot())!=-1){
            boss_shot.bullet[k].knd   =5;
            boss_shot.bullet[k].col   =0;
            boss_shot.bullet[k].angle =PI/2+PI/4+PI/180*s+rang(0.1);
            boss_shot.bullet[k].x     =boss.x;
            boss_shot.bullet[k].y     =boss.y;
            boss_shot.bullet[k].flag  =1;
            boss_shot.bullet[k].cnt   =0;
            boss_shot.bullet[k].spd   =1.3+rang(0.5);
            boss_shot.bullet[k].state =0;
                se_flag[0]=1;
            }
        }

    if(t>=0 && t<=60){
        if((k=search_boss_shot())!=-1){
            boss_shot.bullet[k].knd   =5;
            boss_shot.bullet[k].col   =1;
            boss_shot.bullet[k].angle =PI/2-PI/4-PI/180*s-rang(0.1);
            boss_shot.bullet[k].x     =boss.x;
            boss_shot.bullet[k].y     =boss.y;
            boss_shot.bullet[k].flag  =1;
            boss_shot.bullet[k].cnt   =0;
            boss_shot.bullet[k].spd   =2.4+rang(0.5);
            boss_shot.bullet[k].state =0;
                se_flag[0]=1;
            }
        s++;
        }

    if(t>=160 && t<=220){
        if((k=search_boss_shot())!=-1){
            boss_shot.bullet[k].knd   =5;
            boss_shot.bullet[k].col   =1;
            boss_shot.bullet[k].angle =PI/2+PI/4+PI/180*s+rang(0.1);
            boss_shot.bullet[k].x     =boss.x;
            boss_shot.bullet[k].y     =boss.y;
            boss_shot.bullet[k].flag  =1;
            boss_shot.bullet[k].cnt   =0;
            boss_shot.bullet[k].spd   =2.4+rang(0.5);
            boss_shot.bullet[k].state =0;
                se_flag[0]=1;
            }
        }

    if(t>=160 && t<=220){
        if((k=search_boss_shot())!=-1){
            boss_shot.bullet[k].knd   =5;
            boss_shot.bullet[k].col   =0;
            boss_shot.bullet[k].angle =PI/2-PI/4-PI/180*s-rang(0.1);
            boss_shot.bullet[k].x     =boss.x;
            boss_shot.bullet[k].y     =boss.y;
            boss_shot.bullet[k].flag  =1;
            boss_shot.bullet[k].cnt   =0;
            boss_shot.bullet[k].spd   =1.3+rang(0.5);
            boss_shot.bullet[k].state =0;
                se_flag[0]=1;
            }
        s++;
        }

if(t==80 || t==240)
        move_boss_pos(40,40,FMX-40,130,80, 60);

    for( int i = 0; i < BOSS_BULLET_MAX; i++ ){
    if( boss_shot.bullet.flag > 0 && boss_shot.bullet.state == 0 ){
        double x=boss_shot.bullet.x;
        double y=boss_shot.bullet.y;

        // 右の壁にぶつかっているか
        if( x > FMX+12 ){
            boss_shot.bullet.x = -12;
            boss_shot.bullet.state = 1;
            }

        // 左の壁にぶつかっているか
        if( x < -12 ){
            boss_shot.bullet.x = FMX+12;
            boss_shot.bullet.state = 1;
            }
        }
    }
}


あと管理人さんが上に張ってくれたファイルを解凍して、実行してみたところ
fatal error C1083: include ファイルを開けません。'DxLib.h': No such file or directory
こんなエラーが出てきました。
このエラーは初見で対処法が分からないのですがどうすればいいのでしょうか?

Dixq (管理人)

Re:弾幕のプチテストプレイその4

#17

投稿記事 by Dixq (管理人) » 15年前

#include <DxLib.h>
ここを
#include "../../../include/DxLib.h"

こう変えたらエラーは消えるかと。
(../の数あってるかな?^^;)

もしくはDXライブラリの初期設定のページの手順をきちんとやればエラーは出ません。

jay

Re:弾幕のプチテストプレイその4

#18

投稿記事 by jay » 15年前

エラー消えましたよ、ありがとうございます。

凄いですね、極まれば我流(?)でもここまでできるのか・・・
1つ目の弾幕はいい刺激になりましたよ
やはり人さまのコードは参考になりますねぇ。

2つ目の方は、なんか似たようなの見たことありましたが。
(夢子が似たような奴を使ってた)

刺激を受けて弾幕づくり頑張りますね。
そろそろゲームも完成が見えてきたので。

チルチル

Re:弾幕のプチテストプレイその4

#19

投稿記事 by チルチル » 15年前

おお、これは良い感じですね
避けていて楽しいです

確かに少し難易度が高いようですが
色々と調整すればOKな所まで来ていると思いますよ

そうですね・・

・赤と青を交互に撃つ
・撃つ方向を毎回多少変える
・弾を他の種類、色に変えてみて映えるものを探してみる
・弾の画像が重ならないように乱数の均一性を上げる
・もう少し待ち時間を長くして前回の弾をはけさせる
・試しに上下も入れてみる
・1本にしてみる
・狭く長くしてみる
・幅を変えてみる

この辺を調整すると良いかもしれません

Dixq (管理人)

Re:弾幕のプチテストプレイその4

#20

投稿記事 by Dixq (管理人) » 15年前

龍神録の館のコードで遊んで下さっている方で
天神録Gというゲームを作っている方がいらっしゃるのですが

http://video.mixi.jp/list_video.pl?owner_id=7919453

龍神録なんかよりよっぽど綺麗な弾幕が沢山ありましたよ。
センスがあれば弾幕なんてどうにでもなりますよね。
センスを磨きたいものです・・。

jay

Re:弾幕のプチテストプレイその4

#21

投稿記事 by jay » 15年前

調整し難易度の問題もどうにかなりました。
お世話になりました。

残念ながらmixiは登録してないので見ることができません。

閉鎖

“C言語何でも質問掲示板” へ戻る