void boss_shot_bulletH003()
{
#define TM003 350
int i,k,t=boss_shot.cnt%TM003,t2=boss_shot.cnt;
if(t2==0)//フラッシュ
{
flash.flag=1;
flash.knd=1;
flash.to_cnt=60;
flash.cnt=0;
}
if(t==0)//目印の弾
{
for(i=0;i<32;i++)
{
if((k=search_boss_shot())!=-1)
{
boss_shot.bullet[k].col = 2;
boss_shot.bullet[k].x = boss.x;
boss_shot.bullet[k].y = boss.y;
boss_shot.bullet[k].knd = 9;
boss_shot.bullet[k].angle = +PI2/32*i;
boss_shot.bullet[k].flag = 1;
boss_shot.bullet[k].cnt = 0;
boss_shot.bullet[k].spd = 4;
}
}
}
if(t==300)//フラッシュ
{
flash.flag=1;
flash.knd=1;
flash.to_cnt=100;
flash.cnt=0;
}
if(300<t && t<305 && t%1==0 )//大弾
{
for(i=0;i<32;i++)
{
if((k=search_boss_shot())!=-1)
{
boss_shot.bullet[k].col = 2;
boss_shot.bullet[k].x = boss.x;
boss_shot.bullet[k].y = boss.y;
boss_shot.bullet[k].knd = 0;
boss_shot.bullet[k].angle =[A]+PI2/32*i;
boss_shot.bullet[k].flag = 1;
boss_shot.bullet[k].cnt = 0;
boss_shot.bullet[k].spd = 10;
}
}
}
}//終了
弾幕の作成について…
-
燐子
Re: 弾幕の作成について…
文書き忘れました。すいません
どういう弾幕(スペル)を作りたいかと言うと、
まず、自機中心の弾を32方向の円形に発射し、
その起動と同じ起動に大弾を発射する感じです。
~最初略~
if(t==0)//目印の弾
{
for(i=0;i<32;i++)
{
if((k=search_boss_shot())!=-1)
{
boss_shot.bullet[k].col = 2;
boss_shot.bullet[k].x = boss.x;
boss_shot.bullet[k].y = boss.y;
boss_shot.bullet[k].knd = 9;
boss_shot.bullet[k].angle = [A]+PI2/32*i;
boss_shot.bullet[k].flag = 1;
boss_shot.bullet[k].cnt = 0;
boss_shot.bullet[k].spd = 4;
}
}
}
~中盤略~
if(300<t && t<305 && t%1==0 )//大弾
{
for(i=0;i<32;i++)
{
if((k=search_boss_shot())!=-1)
{
boss_shot.bullet[k].col = 2;
boss_shot.bullet[k].x = boss.x;
boss_shot.bullet[k].y = boss.y;
boss_shot.bullet[k].knd = 0;
boss_shot.bullet[k].angle =[A]+PI2/32*i;
boss_shot.bullet[k].flag = 1;
boss_shot.bullet[k].cnt = 0;
boss_shot.bullet[k].spd = 10;
}
}
}
この二つの[A]の部分に何と入力すればできるでしょうか
boss_shot.bullet[k].angle の部分です
できれば教えてもらえませんか、お願いします
アドバイスなどももらえればうれしいです
どういう弾幕(スペル)を作りたいかと言うと、
まず、自機中心の弾を32方向の円形に発射し、
その起動と同じ起動に大弾を発射する感じです。
~最初略~
if(t==0)//目印の弾
{
for(i=0;i<32;i++)
{
if((k=search_boss_shot())!=-1)
{
boss_shot.bullet[k].col = 2;
boss_shot.bullet[k].x = boss.x;
boss_shot.bullet[k].y = boss.y;
boss_shot.bullet[k].knd = 9;
boss_shot.bullet[k].angle = [A]+PI2/32*i;
boss_shot.bullet[k].flag = 1;
boss_shot.bullet[k].cnt = 0;
boss_shot.bullet[k].spd = 4;
}
}
}
~中盤略~
if(300<t && t<305 && t%1==0 )//大弾
{
for(i=0;i<32;i++)
{
if((k=search_boss_shot())!=-1)
{
boss_shot.bullet[k].col = 2;
boss_shot.bullet[k].x = boss.x;
boss_shot.bullet[k].y = boss.y;
boss_shot.bullet[k].knd = 0;
boss_shot.bullet[k].angle =[A]+PI2/32*i;
boss_shot.bullet[k].flag = 1;
boss_shot.bullet[k].cnt = 0;
boss_shot.bullet[k].spd = 10;
}
}
}
この二つの[A]の部分に何と入力すればできるでしょうか
boss_shot.bullet[k].angle の部分です
できれば教えてもらえませんか、お願いします
アドバイスなどももらえればうれしいです
Re: 弾幕の作成について…
えーと、よみにくくて読んで無いのでちょっと分からないんですが。
アドバイスってことでひとつ、「ちゃんとインデントしましょう」。
インデントは大事ですよ。
あとアングルはラジアンを使うのですがそういうのとかはわかってらっしゃいますでしょうか?
http://dixq.net/rp/14.html
とかをもういちど呼んでみたりいてみてください(ここにはラジアンの説明は無いですがshotatan2()が使われてるので参考になるかも
アドバイスってことでひとつ、「ちゃんとインデントしましょう」。
インデントは大事ですよ。
あとアングルはラジアンを使うのですがそういうのとかはわかってらっしゃいますでしょうか?
http://dixq.net/rp/14.html
とかをもういちど呼んでみたりいてみてください(ここにはラジアンの説明は無いですがshotatan2()が使われてるので参考になるかも
✜ で C ご ✜
: す + 注 :
¦ か + 文 ¦
: ? Is the は :
✜ order C++? ✜
: す + 注 :
¦ か + 文 ¦
: ? Is the は :
✜ order C++? ✜
糸冬
――――――――
制作・著作 NHK
――――――――
制作・著作 NHK
Re: 弾幕の作成について…
フォーラムルールに書いてありますが
ここの掲示板ではコードを張り付けるときは原則としてcodeタグで囲んでくださいね
最低限のルールなのでよろしくお願いします
囲んでみました
今更囲んでみてもインデント解除されてるのでアレですけど・・・
で、質問の回答については”ボスから見た自機の角度”を入れればいいのですが
恐らくloweさんがおっしゃっているリンク先を参照すれば分かると思います
ここの掲示板ではコードを張り付けるときは原則としてcodeタグで囲んでくださいね
最低限のルールなのでよろしくお願いします
囲んでみました
if(t==0)//目印の弾
{
for(i=0;i<32;i++)
{
if((k=search_boss_shot())!=-1)
{
boss_shot.bullet[k].col = 2;
boss_shot.bullet[k].x = boss.x;
boss_shot.bullet[k].y = boss.y;
boss_shot.bullet[k].knd = 9;
boss_shot.bullet[k].angle = [A]+PI2/32*i;
boss_shot.bullet[k].flag = 1;
boss_shot.bullet[k].cnt = 0;
boss_shot.bullet[k].spd = 4;
}
}
}
~中盤略~
if(300<t && t<305 && t%1==0 )//大弾
{
for(i=0;i<32;i++)
{
if((k=search_boss_shot())!=-1)
{
boss_shot.bullet[k].col = 2;
boss_shot.bullet[k].x = boss.x;
boss_shot.bullet[k].y = boss.y;
boss_shot.bullet[k].knd = 0;
boss_shot.bullet[k].angle =[A]+PI2/32*i;
boss_shot.bullet[k].flag = 1;
boss_shot.bullet[k].cnt = 0;
boss_shot.bullet[k].spd = 10;
}
}
}
で、質問の回答については”ボスから見た自機の角度”を入れればいいのですが
恐らくloweさんがおっしゃっているリンク先を参照すれば分かると思います
♪僕たちは まだ森の中 抜け出そう 陽のあたる場所へ
Re: 弾幕の作成について…
loweさん、jayさん、すいませんでした…囲ったものを書いておきます。
見様見真似でshotatan2関数とやらを使ってみましたが、
どうしても角度を決める弾と大弾の位置がずれます…
「角度を決める弾と5つの大弾をそれぞれ、発射される時に自機がいた方向に発射する」のではなく、
「角度を決める弾が発射される時に自機がいた方向と同じ方向に5つの大弾も発射する」ようにしたいのです。
方法を教えてください。お願いします。
>ソフト屋さん
すいません。手直ししておきました。
只今いろいろと試してみています。
見様見真似でshotatan2関数とやらを使ってみましたが、
どうしても角度を決める弾と大弾の位置がずれます…
「角度を決める弾と5つの大弾をそれぞれ、発射される時に自機がいた方向に発射する」のではなく、
「角度を決める弾が発射される時に自機がいた方向と同じ方向に5つの大弾も発射する」ようにしたいのです。
方法を教えてください。お願いします。
>ソフト屋さん
すいません。手直ししておきました。
只今いろいろと試してみています。
void boss_shot_bulletH003()
{
#define TM003 350
int i,k,t=boss_shot.cnt%TM003,t2=boss_shot.cnt;
double angle;
angle=bossatan2();
if(t2==0)//フラッシュ
{
flash.flag=1;
flash.knd=1;
flash.to_cnt=60;
flash.cnt=0;
}
if(t==0)//角度を決める弾
{
for(i=0;i<32;i++)
{
if((k=search_boss_shot())!=-1)
{
boss_shot.bullet[k].col = 2;
boss_shot.bullet[k].x = boss.x;
boss_shot.bullet[k].y = boss.y;
boss_shot.bullet[k].knd = 9;
boss_shot.bullet[k].angle = angle+PI2/32*i;
boss_shot.bullet[k].flag = 1;
boss_shot.bullet[k].cnt = 0;
boss_shot.bullet[k].spd = 4;
}
}
}
if(t==300)//フラッシュ
{
flash.flag=1;
flash.knd=1;
flash.to_cnt=100;
flash.cnt=0;
}
if(300<t && t<305 && t%1==0 )//大弾
{
for(i=0;i<32;i++)
{
if((k=search_boss_shot())!=-1)
{
boss_shot.bullet[k].col = 2;
boss_shot.bullet[k].x = boss.x;
boss_shot.bullet[k].y = boss.y;
boss_shot.bullet[k].knd = 0;
boss_shot.bullet[k].angle = angle+PI2/32*i;
boss_shot.bullet[k].flag = 1;
boss_shot.bullet[k].cnt = 0;
boss_shot.bullet[k].spd = 10;
}
}
}
}
最後に編集したユーザー 燐子 on 2012年1月31日(火) 19:09 [ 編集 1 回目 ]
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 15年前
- 住所: 東海地方
- 連絡を取る:
Re: 弾幕の作成について…
インデントは正確にお願いします。
読みづらいのもありますがバグの原因と成ることが多いのです。
「投稿前チェックリスト(beatleさん作成)」 ← チェック3を御覧ください。
http://uchan.net/w/index.php?mixcpp%2F% ... 5%B9%A5%C8
問題点ですが、「角度を決める弾」と「大弾」を同じ方向に発射したいなら「角度を決める弾」発射時にboss_shotの構造体などにangleを保存しておいて「大弾」は保存しておいたangleを使う必要があります。こうすれば同じ方向に発射できますが理屈はわかりますか?なぜズレのかをよく考えてみてください。
読みづらいのもありますがバグの原因と成ることが多いのです。
「投稿前チェックリスト(beatleさん作成)」 ← チェック3を御覧ください。
http://uchan.net/w/index.php?mixcpp%2F% ... 5%B9%A5%C8
問題点ですが、「角度を決める弾」と「大弾」を同じ方向に発射したいなら「角度を決める弾」発射時にboss_shotの構造体などにangleを保存しておいて「大弾」は保存しておいたangleを使う必要があります。こうすれば同じ方向に発射できますが理屈はわかりますか?なぜズレのかをよく考えてみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: 弾幕の作成について…
>ソフト屋さん
あなたのアドバイスと恋の迷路の弾幕を参考にしたらできました!
もっと簡単な作り方があるかもしれませんが、私なりに満足する弾幕になりました
loweさん、jayさん、ソフト屋さん
ありがとうございました!m(_ _)m
完成したもの
あなたのアドバイスと恋の迷路の弾幕を参考にしたらできました!
もっと簡単な作り方があるかもしれませんが、私なりに満足する弾幕になりました
loweさん、jayさん、ソフト屋さん
ありがとうございました!m(_ _)m
完成したもの
void boss_shot_bulletH000()
{
#define TM000 250
int i,k,t=boss_shot.cnt%TM000,t2=boss_shot.cnt;
double angle;
if(t2==0)//フラッシュ
{
flash.flag=1;
flash.knd=1;
flash.to_cnt=60;
flash.cnt=0;
}
if(t==0)//角度を決める弾
{
for(i=0;i<32;i++)
{
if((k=search_boss_shot())!=-1)
{
boss_shot.bullet[k].col = 2;
boss_shot.bullet[k].x = boss.x;
boss_shot.bullet[k].y = boss.y;
boss_shot.bullet[k].knd = 9;
boss_shot.bullet[k].angle = bossatan2()+PI2/32*i;
boss_shot.bullet[k].flag = 1;
boss_shot.bullet[k].cnt = 0;
boss_shot.bullet[k].spd = 4;
se_flag[0]=1;
}
}
}
if(t==0)//自機の角度を記憶
boss_shot.base_angle[0]=bossatan2();
{
if(t==200)//フラッシュ
{
flash.flag=1;
flash.knd=1;
flash.to_cnt=100;
flash.cnt=0;
}
if(200<t && t<220 && t%2==0 )//大弾 10発
{
for(i=0;i<32;i++)
{
if((k=search_boss_shot())!=-1)
{
boss_shot.bullet[k].col = 2;
boss_shot.bullet[k].x = boss.x;
boss_shot.bullet[k].y = boss.y;
boss_shot.bullet[k].knd = 0;
boss_shot.bullet[k].angle = boss_shot.base_angle[0]+PI2/32*i;
boss_shot.bullet[k].flag = 1;
boss_shot.bullet[k].cnt = 0;
boss_shot.bullet[k].spd = 10;
se_flag[0]=1;
}
}
}
}
}//終了Re: 弾幕の作成について…
ちなみにですが,#defineは関数などの構造をまったく感知しませんのでご注意ください.
#defineを関数の中に書いたとしても,関数の終端を超えてファイルの終端まで有効になるということです.
#defineを関数の中に書いたとしても,関数の終端を超えてファイルの終端まで有効になるということです.
Re: 弾幕の作成について…
>beatleさん
わざわざありがとうございます!m(_ _)m
つまり、ファイルの最後までTM000の値は250ってことですか?
他の弾幕データではTM001などと変えていけば大丈夫ですよね?
わざわざありがとうございます!m(_ _)m
つまり、ファイルの最後までTM000の値は250ってことですか?
他の弾幕データではTM001などと変えていけば大丈夫ですよね?