- 締切済み
VBでのシューティングゲーム
こんにちは VB6.0を使ってシューティングゲーム作りしてるですが、弾を発射することはできたのですが弾が当たっても消えません(当たり前ですが 判定でIf文を使うのはわかっているのですが、そこからがわかりません・・・ どなたかご教授お願いします。 内容としては、image3(弾)がimage1(敵)に当たったらimage1が非表示になるって感じにしたいです。 image1も3もタイマーを使っています、よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- gcqd75ce
- ベストアンサー率8% (6/67)
2ヶ月前に回答したもんですけど、 入門の本をよく読む。 質問掲示板なんで、こうゆう書き方はムカツキますよね? まぁ、あきらめられたのならしょうがないけど。 if文の中にif文を作るのは苦手ですか? あと、論理演算のトコを勉強すると答えがみえてくるかなぁ^^; ANDとかORとかです。 もし、弾の範囲が敵キャラの範囲にあるかどうかの判定プログラムを作る場合は 必要ですよ。 それとプログラムを作る前にフロチャートを書くとか。 敵キャラの絵を描いて(x、y)(x1、y1) 弾の絵を描いて(t、z)(t1、z1) とか。 ノートに鉛筆で実際に書く描く書く。
- gcqd75ce
- ベストアンサー率8% (6/67)
簡単簡単。 弾の現在値+弾の大きさの範囲に敵の位置+敵の大きさが入ればいいだけ。 V6は知らね。 全ての言語で同じ内容の処理ができる。アハハ。
- sonata1229
- ベストアンサー率36% (76/206)
>難しいですね・・・、言葉では簡単に言えるのにコードにしようと思ったらまったくわかりません。 >一度見ただけではわからないので、何度も見直してやっていこうと思っています。 例えば、image3とimage1はどこかで動かす処理をしているわけですよね。 つまり、 位置の計算処理 ↓ 描画処理 この位置計算処理部に、 両者の当たり判定処理を組込むだけです。 両者の距離の出し方がわからないというのは…プログラム以前の問題ですが、三角定理で求まりますよ。 コードにしようとして何がわからないのか、具体的に書いてくれないと 回答しようがありません。
- sonata1229
- ベストアンサー率36% (76/206)
あまり具体的に書かれていないのですが、 とりあえず、回答してみます。 まず、弾が当たったかどうかの当たり判定処理が必要です。 当たり判定とは、その名の通り当たっているか当たっていないかを判別します。 判別には基本的には両者の距離から判断します。 例えば、球体AとBの2つがあり、AとBが当たっている場合は AB間の距離<=Aの半径+Bの半径 それ以外なら、当たっていません。 これはお分かりですか? この判定を組込むだけです。 まず必要なのは、弾と敵の当たり判定領域(上記の例なら、AとBの半径)の設定(定義)が必要です。 そして、常に両者間の距離計算を行います。 つまり、60fpsのシューティングゲームなら、 1秒間に60回この計算を行って判定処理しています。 最近の弾幕系シューティングにおいても基本的には同じ手法で 当たり判定処理をしています。 image3とimage1の判定領域を仮に10と設定していれば、 image3とimage1の距離が20以下になれば当たっているので、 image1を非表示(破棄)するようにすればいいです。
お礼
難しいですね・・・、言葉では簡単に言えるのにコードにしようと思ったらまったくわかりません。 一度見ただけではわからないので、何度も見直してやっていこうと思っています。 回答ありがとうございました。