ページ 11

一定時間ごとに全方向ショット

Posted: 2010年9月12日(日) 11:18
by Ultimate
現在、弾幕を作成していて、一定時間ごとに敵が円形にショットを打つようにしようと思っています。
その作り方については下のようにすることでできますか?
もっと良い方法があったら教えてください。

1.弾の構造体を作る。
typedef struct{
int x[100]; //X座標 弾の数である100個を作成
int y[100]; //Y座標 弾の数である100個を作成
int nagasa[5]; //X座標、Y座標の基準になる長さ 20個ずつに分けるので5個作成
double sinsin[100]; //サイン値 弾の数である100個を作成
double coscos[100]; //コサイン値 20個ずつに分けるので5個作成
double r[100]; //ラジアン値 20個ずつに分けるので5個作成
int flag[5]; //フラグ 20個ずつに分けるので5個作成
int count; //カウント
}ch_t;
ch_t tmain1;


2.0~19,20~39,40~59,60~79,80~99のように20個ずつサイン、コサインを設定。その他0に初期化。

3.1ループごとにカウンターを1ずつ増やし、まず1組目発射、100カウントごとに次へと発射し、それぞれ500カウントごとに消し、初期化



こんな感じでいけるかなと思うのですが、もっと良い方法はありますか?

Re:一定時間ごとに全方向ショット

Posted: 2010年9月12日(日) 11:48
by Ultimate
現在の状況をアップしておきます。
http://www1.axfc.net/uploader/Sc/so/152499


これは、20個の弾が消えるまで次の発射ができない状況なので、これを上のような方法を利用して画面から1回目が消える前に2回目も発射できるようにしたいです。

Re:一定時間ごとに全方向ショット

Posted: 2010年9月12日(日) 11:52
by シエル
こちらが参考になるかと。

http://sinkai.net/rp/4.php

Re:一定時間ごとに全方向ショット

Posted: 2010年9月12日(日) 21:10
by Ultimate
すみませんが、そのページなどは関数を作りやっているようです。
メインの関数の中に直接書く方法を教えてください。

すでに作ってある変数は以下の通りです。
typedef struct{
int x[100]; //X座標 弾の数である100個を作成
int y[100]; //Y座標 弾の数である100個を作成
int nagasa[5]; //X座標、Y座標の基準になる長さ 20個ずつに分けるので5個作成
double sinsin[100]; //サイン値 弾の数である100個を作成
double coscos[100]; //コサイン値 20個ずつに分けるので5個作成
double r[100]; //ラジアン値 20個ずつに分けるので5個作成
int flag[5]; //フラグ 20個ずつに分けるので5個作成
int count; //カウント
}ch_t;
ch_t tmain1;


ソースでなくて、最初の質問文のように言葉で手順を書いていただけるだけで十分です。

Re:一定時間ごとに全方向ショット

Posted: 2010年9月12日(日) 21:29
by シエル
リンクのページに解説が書いてあるじゃないですか。読みましたか?

Ultimateさんの方法では複雑すぎて何がしたいのかよく分かりません。

Re:一定時間ごとに全方向ショット

Posted: 2010年9月12日(日) 21:47
by Ultimate
読んで、弾を20個ずつに分け、それぞれを18度ずつ設定しました。
ラジアンを求める部分のソース

if(i>0){
tmain1.r=2.0*PI/(19.0/(double)i);//弾それぞれのラジアンを求める。(最初の20個)
}
else tmain1.r=0;


その後のことがわからないです。

Re:一定時間ごとに全方向ショット

Posted: 2010年9月14日(火) 04:01
by シエル
それではラジアンを求められてないと思います。

ソースまで見る気ないですが、今の構成をすべて見直すべきだと思います。

Re:一定時間ごとに全方向ショット

Posted: 2010年9月14日(火) 17:14
by Ultimate
解決