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

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

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

#1

投稿記事 by Ultimate » 15年前

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

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カウントごとに消し、初期化



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

Ultimate

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

#2

投稿記事 by Ultimate » 15年前

現在の状況をアップしておきます。
http://www1.axfc.net/uploader/Sc/so/152499


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

シエル

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

#3

投稿記事 by シエル » 15年前

こちらが参考になるかと。

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

Ultimate

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

#4

投稿記事 by Ultimate » 15年前

すみませんが、そのページなどは関数を作りやっているようです。
メインの関数の中に直接書く方法を教えてください。

すでに作ってある変数は以下の通りです。
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:一定時間ごとに全方向ショット

#5

投稿記事 by シエル » 15年前

リンクのページに解説が書いてあるじゃないですか。読みましたか?

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

Ultimate

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

#6

投稿記事 by Ultimate » 15年前

読んで、弾を20個ずつに分け、それぞれを18度ずつ設定しました。
ラジアンを求める部分のソース

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


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

シエル

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

#7

投稿記事 by シエル » 15年前

それではラジアンを求められてないと思います。

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


閉鎖

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