忍者ブログ
まったくのプログラミング素人の筆者がC++/HSPを使用してSTG(シューティングゲーム)を作っていく過程を書くブログでしたが最近は脱線気味。プログラミング以外にも、ゲーム関連の記事、日々の戯言など。
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

先日から悩んでいたバグの原因がやっと判明して、なんとか修正出来ました^^
敵を倒してもロックオンが外れないと言うバグだったのですが、これはロック管理用の変数と
レーザー存在の有無を管理する変数の要素番号がズレてしまう時があって
たまに、ズレてしまうとロックオンが外れないって現象になっていた模様。

で、それを修正したのがコレ↓

これで上手く出来たやろーと思ったのですが、どうも動きがイマイチな気がします。
レーザーの発射方向を敵と反対方向に射出するようにしているのですが、そうすると自機の周り
全体からレーザー発射されるようになります。
当初はそれで良いと思っていたのですが実際に動かしてみると、どうも違和感が・・・

で、レーザーの射出方向を自機の下側に持ってくるようにしたのがコレ↓

こちらの方がホーミング撃ってる!って感じがして良い気がします。
しかも、こちらの方がアルゴリズムも単純で処理も軽いんですよね^^;
苦労して複雑な処理を作ったのになぁと思いつつ、処理は軽い方が良いのでコチラを採用する事に
しました。

プログラムはコチラ↓
http://blog.cnobi.jp/v1/blog/user/63629cf35d5259ece1529ed13f0745b1/1268027397
今回もグチャグチャな上にメイン関数に全ての処理を書いてしまっているので
あまり参考にしない方が良いかもしれません(汗)

とりあえず、コレでロック数の制限は出来たので後は敵の体力の概念を導入して連続して
ロックオン出来るようにすればホーミングレーザーとしては完成かなぁと思っています^^

ベジェ曲線を使ってホーミングレーザーを作ってみる その12へ
PR

前回のエントリから、はや一ヶ月程度経ってしまっているのですが、全く何もして無い訳でも
ないんです。

一応、ロックオンしたまま敵が消えても大丈夫なようにして、ロックオンの最大数を制限出来る
ようにはしてみたのですが、何故か敵を倒してもロックオンが外れないバグに遭遇していまして
しかも、常に再現されるわけではなく外れたり外れなかったりするんですよね。

で、そのバグの出現ポイントがわからずにアレコレと検証しているのですが一向に原因が
解らずで、だんだんと嫌になってきて放置→またバグ取り→放置→・・・・・・ってのを
繰り返してます^^;

いつもなら、放置して他の作業したりするんですが、ロックオンレーザーはどうしても
完成させたいので何とか上手く動くようにしたいと思っていて、こうやってエントリでも書けば
もっと頑張るかなぁと思って書いてみました(笑)

それにしてもロックオンレーザーがこんなにも大変な物だとは思ってませんでした^^;
レーザー作るだけなら簡単だったのですが、ロックオンの最大数やロックオン後の処理など
色々と考えなければならない要素が多くて思った以上に大変ですが、何とか完成させたいです^^;

先日作製したホーミングレーザーを蒼穹紅蓮隊のようにボタンを押した時にロックオンして
放すとレーザー発射されるようにしてみました。
こんな感じ↓

ついでにロックオン時のアニメも作ってみました。
dd1326c9.GIF

プログラムはコチラ↓
http://blog.cnobi.jp/v1/blog/user/63629cf35d5259ece1529ed13f0745b1/1264142024
今回もグチャグチャな上にメイン関数に全ての処理を書いてしまっているので
あまり参考にしない方が良いかもしれません(汗)

プログラム的にはボタンONの時に敵とロックオン範囲の当たり判定を行って
ボタンを押していない時にレーザーを発射させるようにしただけです。

ただ、現状ではロックオンしたままで敵が消えるとおかしくなってしまうのと
敵の数を増やすと、レーザー最大数を超えてロックオンしてしまうので、その辺を何とか
しないといけません。

で、それが直せたら、耐久力のある敵を登場させて連続ロックオンが出来るようになれば
ホーミングレーザーは完成かなーと思っています^^

ベジェ曲線を使ってホーミングレーザーを作ってみる その11へ
先日作製したホーミングレーザーをロックオンで発射出来るようにして敵の数も増やしてみました。
こんな感じ↓

とりあえず丸い緑の範囲に敵が入るとロックオンされてレーザーが撃てるようになっています。

プログラムはコチラ↓
http://blog.cnobi.jp/v1/blog/user/63629cf35d5259ece1529ed13f0745b1/1263925101
ですが!このプログラム、グチャグチャな上にメイン関数に全ての処理を書いてしまっているので
あまり参考にしない方が良いかもしれません(汗)

今回、ホーミングの範囲を円形にしたかったので、敵との当たり判定に円の判定を使ってみました。
当たり判定の作製にあたっては、C言語何でも質問サイトさんのコチラのページを参考に
させて頂きました。
考え方は上記のページに解りやすく書いてあるので要点だけ。
enemy[0]とenemy[1]の判定をするとします。
で、
enemy[0].range=100;
enemy[1].range=180;
このように、それぞれの当たり判定の半径を設定します。

x=enemy[0].x-enemy[1].x;
y=enemy[0].y-enemy[1].y;
x軸とy軸の計算をして・・・

if(x*x+y*y<range*range)
x*x+y*yがrange*range以下なら当たってると判定出来るんです。

凄くシンプルで良い判定方法やな~と思ったのですが、この判定方法だと長方形の敵なんかには
使えないんですよね・・・
でも、判定する円の数を増やしたりすれば対処出来そうな気もするので、その辺は今後の課題って
事で、とりあえずホーミングレーザーを蒼穹紅蓮隊のようにボタンを押している間はロックオンして
ボタンを放すと発射するように変更してみたいと思います。
後、グチャグチャなプログラムを綺麗にして関数化もしたいです^^;

ベジェ曲線を使ってホーミングレーザーを作ってみる その10へ
先日作製したホーミングレーザープログラムを元に自機のレーザー本数を最大10本に
増やしてみました。

こんな感じ↓

レーザー消滅のエフェクトも追加してみた。
エフェクトの作り方については、この辺この辺で過去に書いてます。
その画像をDrawRotaGraph関数で引伸したりして表示させてみました。

プログラムはコチラ↓
http://blog.cnobi.jp/v1/blog/user/63629cf35d5259ece1529ed13f0745b1/1263710249

プログラム的には配列変数使って数を増やしただけなので、コレといって新しい事は何も
してなかったりします(汗)

とりあえずコレでレーザー自体の動きは良いかなぁと思っているので、次は複数の敵をロックオン
出来るようにしてみたいなぁと思っているのですが、どうやって実装するか悩み中です^^;

ベジェ曲線を使ってホーミングレーザーを作ってみる その9へ
Twitter
カレンダー
06 2025/07 08
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
最新コメント
[04/20 kt.]
[04/19 うぇむ]
[11/24 kt.]
[11/21 NONAME]
[11/24 kt.]
プロフィール
HN:
kt.
性別:
男性
自己紹介:
プログラミング経験は昔ファミリーベーシックでちょっとさわったくらい。
好きなSTGは、怒首領蜂大往生、エスプガルーダ(2)等の弾幕STGやら雷電シリーズなんかの非弾幕、バトルガレッガ、グラディウスシリーズ、R-TYPE等、STGなら何でも好きです。
音楽がカッコイイSTGが特に好きで、並木学氏は最高!
ブログ内検索
忍者ブログ [PR]