セミオート/フルオート連射の実装
を何となく書いてみる。
先ずはフルオート
// FLUU AUTO { const int INTERVAL = 5; // shotの間隔(フレーム) static int shot_time = INTERVAL; if( IsPressKey() && ++shot_time > INTERVAL ) // shotボタン押下でIsPressKey()がtrueになると思いねえ { shot(); // これで弾を撃つと思いねえ shot_time = 0; } }
こんな感じか。shot_timeがINT_MAX超えると悲しいことになりそうだが気にしない。ワンステージ2147483647フレーム到達するゲームとか作ってるんじゃねええええ
で、セミオート+押しっぱでオートにする場合は、ボタンに慣性みたいな処理を入れる。
// SEMI AUTO { const int INTERVAL = 5; // shotの間隔(フレーム) const int KANSEI = 20; // 20フレ毎にボタンを押してればフルオートになる static int shot_time = INTERVAL; static int button_time = KANSEI; if( IsPressKey() ) // shotボタン押下でIsPressKey()がtrueになると思いねえ { button_time = 0; } if( button_time++ < KANSEI && ++shot_time > INTERVAL ) { shot(); // これで弾を撃つと思いねえ shot_time = 0; } }
こんなもんかな。脳内妄想なんで、バグあったら教えてくださいw。ていうか、この程度のことは、シューティングゲームアルゴリズムマニアックスに載ってそうな気がする。今度買ってみよう。買ってからだとパクリ記事になっちゃうので、今書いておくwwwまあ、もしかしたらもっと良い手がるかもしれんしね。