シューティングゲームの館を参考にしてSTGをつくっています。一通りのゲームの流れはでき,後は弾幕を増やしていくだけなのですが,東方地霊殿の3面ボスのスペカ「三歩必殺」をどのようにして実装しているのかわかりません。最初の弾の速さを0にして,一定時間になったら速さをあげるというのはわかるのですが,あのような円の配置(なんか言い回しが下手ですいません)をどうやっているのかわかりません。
下記の動画の3:18からのものです。
三歩必殺の実装
Re: 三歩必殺の実装
敵を中心に360°方向に順番に撃って、一定のフレームで動きをとめて
一定フレームしたら、微妙に角度を変えて動き出す というのを作ってみました
弾の構造体が私独自のになりますが
こんな感じになります
[youtube][/youtube]
一定フレームしたら、微妙に角度を変えて動き出す というのを作ってみました
弾の構造体が私独自のになりますが
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]
Re: 三歩必殺の実装
回答ありがとうございます!
原理はふむふむとなんとなくわかったのですが,自分は頭が悪いのでこのコードが何をやっているかよくわかっていません。申し訳ないのですが,もう一度説明していただくことはできますでしょうか?
あと,m_vEnemyBullet.push_back( bullet );←これはなんでしょうか?
原理はふむふむとなんとなくわかったのですが,自分は頭が悪いのでこのコードが何をやっているかよくわかっていません。申し訳ないのですが,もう一度説明していただくことはできますでしょうか?
あと,m_vEnemyBullet.push_back( bullet );←これはなんでしょうか?
Re: 三歩必殺の実装
>>pegさん
どこらへんを再度説明すればいいでしょうか?
m_vEnemyBullet.push_back( bullet );
これは
vector<tBullet> m_vEnemyBullet; という vectorクラスのtBulletという配列です
tBullet は私の独自の構造体です
どこらへんを再度説明すればいいでしょうか?
m_vEnemyBullet.push_back( bullet );
これは
vector<tBullet> m_vEnemyBullet; という vectorクラスのtBulletという配列です
tBullet は私の独自の構造体です