弾幕の螺旋ショットについての質問です

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

弾幕の螺旋ショットについての質問です

#1

投稿記事 by カルディ » 18年前

自分のソース・構造体の書き方が違い、自分はC言語を始めて半年くらいなのでさっぱりわかりません。

typedef struct
{
int XPos; //X座標
int YPos; //Y座標
int Speed; //移動速度
int HP; //HP
int Damage; //ダメージ量
int BulletInterval; //弾の間隔
int SPNO; //スプライト番号
int Gno; //グラフィック番号

}ENEMY_STATUS;

typedef struct
{
bool flag; // 表示フラグ
float XPos; // X座標
float YPos; // Y座標
int Speed; // 弾のスピード
int SPNO; // スプライト番号
int Gno; // グラフィック番号
bool Grazes; // かすり
int Length; // 長さ

}S_BULLET_STATUS;

自分のソースで敵・弾の構造体はこんな感じになってます。
この構造体で弾幕の螺旋ショットのソースの書き方教えてもらえないでしょうか?

管理人

Re:弾幕の螺旋ショットについての質問です

#2

投稿記事 by 管理人 » 18年前

http://l.huu.cc/s/26.html
こんなのでいいですか?

フラッシュが見えない場合はこちら↓参考に
画像

基礎的な数学の部分はOKでしょうか?
例えば角度θのx座標を求める時は
x=cos(θ)
で求まる事などはOKでしょうか?

また、ラジアンや円周率などは。

yは下が正なので、θ=PI/2が鉛直下向きになります。
例えばここから2*PI/360ずつずらして発射すれば1度ごとの螺旋になりますし、同時に発射すれば円形弾幕になります。
例えば

int n=0;
double angle=PI/2;

θ=PI/2+n*2*PI/360で発射。
n++;

10ms待つ

θ=PI/2+n*2*PI/360で発射。
n++;

10ms待つ

θ=PI/2+n*2*PI/360で発射。
n++;

こうすれば、時間差で、円形に発射しますから、螺旋に見えます。
実際にはこんな直線にプログラムを書くことはないでしょうが、イメージ的にこうなります。

発射登録はこの部分で行いますが、起動計算はまた違うところでやってください。

カルディ

Re:弾幕の螺旋ショットについての質問です

#3

投稿記事 by カルディ » 18年前

なんかHPに載ってるソースとは全然違う感じで出来ました。
出来たので良かったです。親切にどうもありがとうございました

閉鎖

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