ページ 11

ミシャグジ様

Posted: 2011年9月25日(日) 22:42
by tune
ミシャグジ様の弾幕が作りたいのですが、どういう動きをしているのかが何回見ても分かりません。
最初に弾がまっすぐ飛んでから、角度を変えてきれいな円形を保ったまま、交差しながら拡散していくのが良く分かりません。

僕はこんな感じでやってみたんですけど・・・。
弾の移動関数の主要部分です。

コード:

if(bullet_cnt > 180 && bullet_cnt < 270 )
				{//速度が遅くなって、むきかえる。
					bullet_1[i][j].vx = 0.3; //x軸方向の速度
					bullet_1[i][j].vy = 0.3; //y軸方向の速度
                  //bullet_stateは回転する向き。1or-1で表現。
                  //ちょっとずつ角度をつける。
					bullet_1[i][j].rad += 2*PI/90*(bullet_state); 
				}else{//一定時間で速度戻す。
					bullet_1[i][j].vx = 2.0;
					bullet_1[i][j].vy = 2.0;
				}
				bullet_1[j][i].x += bullet_1[j][i].vx * cos(bullet_1[j][i].rad);
				bullet_1[j][i].y += bullet_1[j][i].vy * sin(bullet_1[j][i].rad);
			}
このコードだと、円形がばらばらになって(発射されるときは円形(全方位弾))、弾が全て上の方に行ってしまいます。

とにかく、ミシャクジ様みたいな弾幕が作れればいいです。
弾がきれいな円形を保ちながら、発射された位置を中心に回転するということが出来れば、良いと思うのですが
どのような、角度や速度、位置の数学的関数をもちいればよいのか教えて下さい。お願いします。

Re: ミシャグジ様

Posted: 2011年9月26日(月) 00:36
by jay
このリンク先なんて今回の問題にお誂え向きかと
http://dixq.net/rp/16.html


蛇足的な補足をするなら
ミシャグジ様は所謂「交差弾」というヤツで
円形を保ったまま外に広がりながら、弾と弾が交差しているのが分かります。

そのため弾を円形に撃ったあとは
正方向に緩やかに角度を変えるものと、逆方向に緩やかに角度を変えるものを交互に配置している訳ですね
もっともこの場合、弾に加速度の情報を持たせている訳ではなく
弾幕の操作関数の方で変化させているのですけどね。

Re: ミシャグジ様

Posted: 2011年9月26日(月) 21:21
by tune
龍神録のコードを見て、まねしてやってみてうまくできなかったので質問したのですが、見直してもうまくできません・・・。
なんか、弾が小回りして上の方に行ってしまいます。

Re: ミシャグジ様

Posted: 2011年9月26日(月) 22:10
by jay
”小回りして”というのが具体的にどういう状態なのかが分かりませんが(汗)

そうですね、上に行ってしまうということは角度の調整が上手くできていないということでしょうし
まずは弾の動きを大まかに纏めると
・最初は円形にまっすぐ発射
・時間とともに徐々に角度を変えていく
・同時にスピードも徐々に落ちていく

ですね
但しスピードの変化も角度の変化も一定時間経過すると変化量は無くなる(変化しなくなる)仕様です

これらを踏まえて変化を始める時間、変化が終わる時間、1f辺りの変化量
等の調整を繰り返してそれらしい動きをするまで頑張ってみてはどうでしょうか?


現状では情報が少ないので、こちらから出来るアドバイスは少ないですね・・・。 申し訳ないです。
実際に動作させた時のムービーなど貼り付けてくだされば何か手掛かりがつかめるかも知れませんが・・・

Re: ミシャグジ様

Posted: 2011年9月26日(月) 23:10
by tune
できれば、キャプチャした動画をアップしたいのですが、
この掲示板ってキャプチャした動画や画像などをアップすることが出来るんですか?
フォーマットはaviなんですが。

Re: ミシャグジ様

Posted: 2011年9月26日(月) 23:31
by h2so5
Youtubeなどにアップしてリンクを貼ってください。
Youtube・ニコニコの場合は記事内に埋め込むこともできます。

Re: ミシャグジ様

Posted: 2011年9月29日(木) 21:50
by tune
すいません。ソースを見直したらfor文のiとjを書き間違えてただけでした・・・。
親切に回答してくださりありがとうございました。