龍神録プログラミングの館さてさて、いよいよ弾幕作りに入っていきます。ボスの弾幕を作るにはボスが必要です。ボスの骨格を作るのが色々と面倒ですが、頑張りましょう。ここで、何故か物理のお話をします。龍神録ではボスが「スーっ」「スーっ」と動いていたと思います。等速運動で動いて、指定地点まで来たら突然止まるモーションだと安っぽく見えてしまいます。加速したり、減速したりして、綺麗に止まってくれないと綺麗なモーションに見えません。そこで、「これだけの距離をこれだけの時間で綺麗に移動してくれ」という指示を受け付ける計算式を考えて見ましょう。数学が苦手な人には嫌な計算式かもしれませんが、とても簡単な計算なので、みてみてください。物理の力学で等加速度運動をする為の3つの大きな方程式があります。下の方程式の1〜3です。vは速度、aは加速、yは距離、tは時間を示します。今、ドンと発射して、指定距離yで指定時間tyで減速してピタっと止まることを考えます。いうことで、式Aが導けました。tyが指定時間、ymaxが移動距離です。カウンタをtにあわせて計算すればyが求まります。計算すれば綺麗なモーションが可能になります。以下その計算式を実装しているのが、input_phy(登録)calc_phy(計算)です。boss.cnt++;}いや〜ボスの制御は面倒ですね。stage_countというゲームカウンタがboss.appear_countといういつボスが出現するかというカウンタ情報と一致したらボスを出現させます。ボスはbossという変数を用意しますから、ここでフラグをたてておきます。boss.flag=1とします。boss.stateが1の時、弾幕〜弾幕の休憩時間。敵が待機してる状態です。boss.stateが2の時は、弾幕を発射しているさなかです。弾幕関数へ渡す渡し方は以前ショットでやった関数ポインタです。bossatan2()関数はこれを呼ぶだけで自機と敵との成す角度が返るので便利です。弾幕作製時には是非利用しましょう。いつボスが出現するか、体力はいくつかという情報はとりあえずini関数で適当な値をいれておきます。bright_set.brt=255;}変数と構造体の用意もしておきます。boss_shot_main();弾幕の関数は雑魚ショットの時と同じように関数ポインタで格納します。今回、includeフォルダにfunc.hというファイルを追加して下さい。boss_shot_bulletH000,};試しに一つ弾幕を用意してみます。}}まだ当たり判定も何もないですが、一応弾幕は開始されます。