三歩必殺の実装

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

三歩必殺の実装

#1

投稿記事 by peg » 14年前

シューティングゲームの館を参考にしてSTGをつくっています。一通りのゲームの流れはでき,後は弾幕を増やしていくだけなのですが,東方地霊殿の3面ボスのスペカ「三歩必殺」をどのようにして実装しているのかわかりません。最初の弾の速さを0にして,一定時間になったら速さをあげるというのはわかるのですが,あのような円の配置(なんか言い回しが下手ですいません)をどうやっているのかわかりません。
下記の動画の3:18からのものです。

dic
記事: 658
登録日時: 14年前
住所: 宮崎県
連絡を取る:

Re: 三歩必殺の実装

#2

投稿記事 by dic » 14年前

敵を中心に360°方向に順番に撃って、一定のフレームで動きをとめて
一定フレームしたら、微妙に角度を変えて動き出す というのを作ってみました

弾の構造体が私独自のになりますが

コード:

	if( enemy->states == 3 )
	{
		enemy->v0 = 0;
		enemy->v = 0;
		enemy->a = 0;

		static	double	d;
		tBullet	bullet;

		memset( &bullet, 0, sizeof(bullet) );
		int	i;
		for( i=0; i<4; i++ )
		{
			bullet.x = enemy->x;
			bullet.y = enemy->y;
			bullet.kind = 1;
			bullet.angle = d + 90*i;
			bullet.v  = 3;
			bullet.v0 = 3;
			bullet.kind = 2;
			m_vEnemyBullet.push_back( bullet );
		}
		d = d + 0.5;

		if( d > 90 )
			enemy->states = 4;
	}
こんな感じになります
[youtube][/youtube]

peg

Re: 三歩必殺の実装

#3

投稿記事 by peg » 14年前

回答ありがとうございます!
原理はふむふむとなんとなくわかったのですが,自分は頭が悪いのでこのコードが何をやっているかよくわかっていません。申し訳ないのですが,もう一度説明していただくことはできますでしょうか?
あと,m_vEnemyBullet.push_back( bullet );←これはなんでしょうか?

dic
記事: 658
登録日時: 14年前
住所: 宮崎県
連絡を取る:

Re: 三歩必殺の実装

#4

投稿記事 by dic » 14年前

>>pegさん
どこらへんを再度説明すればいいでしょうか?

m_vEnemyBullet.push_back( bullet );
これは
vector<tBullet> m_vEnemyBullet; という vectorクラスのtBulletという配列です
tBullet は私の独自の構造体です

閉鎖

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