• 締切済み

ゲーム制作での質問です。

 Javaでゲームを作ってるんだけど、キャラクターと壁との当たり判定がよく分からない状態です。  自機と弾の当たり判定なら分からないんですが、自機と壁との当たり判定で配列を用いずに、当たり判定をするコツが分かる方がいらっしゃたら少しでもいいので教えて下さい。

  • Java
  • 回答数2
  • ありがとう数4

みんなの回答

  • komi1341
  • ベストアンサー率65% (25/38)
回答No.2

当たり判定は大抵のゲームで頻繁に使われるので、判定の基本から高速に計算する手法などなど、ネットだけで探しても大量に資料が見つかります。「ゲームの作り方」みたいなジャンルで探せば書籍もいろいろ見つかるはずです。 基本的にはアルゴリズム、つまり「どう計算するか」の問題なので、Javaに限定してしまうとかえって探しにくいでしょう。単純に「当たり判定」というキーワードで検索してみてください。いろいろな種類のゲームで、どういう当たり判定の方法があるかがうじゃうじゃっと出てきますよ。 ちなみに自機と壁との当たり判定だったら、壁が「画面下端から1ブロック分」みたいに単純なものなら直線との交差判定で済みますが、それ以外はゲームの詳細が分からないのでなんとも。何を配列にすることを考えていて、それだとなぜ問題なのか、もご質問からは見えてきませんし。なので一度ご自身で検索してみて、自分のゲームにぴったりなものがないか確認することをお勧めします。

dotneer
質問者

お礼

ネットから当たり判定で検索かけて行った方が早いかもしれませんね。 ネットから粘り強く探していけば見つかるかもしれないのでそっちのほうでやってみます。

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

シューティングゲームって事かな 配列以外で実現するのはあまり良い方法ではないね。 なにしろ、画面の座標系は 配列の塊みたいなものだから それはそうと、壁も「弾」扱いしちゃったら良いんじゃないかな。 で 弾と自機の当たり判定の方法を考える、と。 最近よくあるのが自機自体は当たり判定が点で、他は箱とかちょっと雑破な形をしてる・・・ってやつかな。 自機(の当たり判定)は 点なので 弾の有効範囲に点が乗っかっているかを調べるだけになる あ、これ2Dシューティングの話だから。 3Dシューティングだとまた話が変る

dotneer
質問者

補足

説明不足だったので追記します。 2DSTGではなく2Dアクションゲームです。  自分が考えているモノは壁に当たるとちゃんとそこで止まってくれるようなものです。  

関連するQ&A

  • フラッシュでシューティングゲームを作りたい

    フラッシュでシューティングゲームを作りたいのですが、当たり判定や弾の発射の仕方などを公開されているサイトをご存知でしたら教えてください。 よろしくお願いします。

  • すいません、質問というか困っていることがあります。

    すいません、質問というか困っていることがあります。 私は今C#でイライラ棒を作成しているのですが、ピクチャーボックス内での、プレイヤー(自機)の動かし方と。壁に当たった時の当たり判定のプログラミングが分りません。 グーグルなどで検索をかけましたが、私が納得するような回答はありませんでした。 C#に詳しい方、お手数ですがご教授お願いします。 できればソース付でお願いします。

  • Lite1.0でのシューティングゲームですが

    いつも大変参考にさせていただいております。 さて、本題ですが、Lite1.0でシューティングゲームを作成しているのですが 動きと当たり判定の連動がうまく行きません。 今現在設定している敵MCのあたり判定は以下の通りです。 //自機(攻撃側)とのあたり判定 if (../pc:_y >= _y - 10 and _y + 10 >= ../pc:_y) { if (../pc:_x == _x) { if (/game:hp <> 0) { if (/game:dmg <> 1) { tellTarget ("../pc") { gotoAndPlay("dmg"); } tellTarget ("../../hp") { nextFrame(); } } } } } //弾とのあたり判定 if (../tama:fire == 1) { if (../tama:_y >= _y - 10 and _y + 10 >= ../tama:_y) { if (../tama:_x >= _x -10 and _x + 10 >= ../tama:_x) { tellTarget ("../tama") { gotoAndStop(1); } gotoAndPlay("baku"); } } } インスタンス名の説明をします。 pcが自機、tamaは自機が発射する弾。 gameがシーン1に置かれている全体のMC。 hpが自機のパワー数、dmgはダメージ。 このASを敵MCの1フレーム目に記載しております。 そして、2フレーム目に gotoAndPlay(_currentframe - 1); 3フレーム目~7フレーム目には /game:score += 10; ラベルはbakuとしています。 そして、8フレーム目に stop(); ラベルをendとしています。 タイムラインは(全てMC) シーン1→game→ステージ(敵や弾・自機)→敵(あたり判定をしているMC) となっております。 そして、以前の質問にあった、こちらの動きを付けたいと考えております。 ↓ http://oshiete1.goo.ne.jp/qa2802247.html あたり判定は問題なく出来ているのですが、 これに動きをつけると動作しなくなってしまう・・・ と言いますか、どのように連動させるべきかうまいこと分かりません。 ゲームのイメージとしてはインベーダーゲームと思って下さい。 また違った方法で動きをつける様になるのでしょうか。 説明が長くなってしまって申し訳ございませんが 宜しくお願いいたします。

  • ただかわすゲーム

    たぶんフリーソフトだと思うのですが、自機を操作してひたすら弾をよけるゲームを探しています。 ウインドウは小さめで、その中でかなり激しい攻撃をたてと横によけていくシンプルなゲームです。 ゲームオーバーになったとき成績に応じて、「課長」とか「部長」とか「サル」といった評価が出ると思いました。 ご存知の方は入手方法など教えてください。 

  • N88BASICでシューティングゲームを作りたい!!

    N88BASICを使って簡単なゲームをつくってみたいんですけど どうもうまくいかないんですよ。 昔なつかしのインベーダーゲームを作ろうとがんばっているのですが 敵と自機を配置したんですけどそれを動かすにはどうしたらいいのでしょうか? もう敵を動かすのはめんどうなので自機だけキー入力で 左右に動かせるようにしたいんです。 そうするにはどういう命令を書けばいいのでしょうか? それとシューティングゲームなので弾を発射するとか 当たったらやられるとかそういう肝心なところの プログラムがわかんないんです。 どなたか教えてもらえないでしょうか お願いします。m(-_-)m

  • 簡単なシューティングゲーム制作

    下記の内容を目標に簡単なシューティングゲームを作っているのですが、アドバイスをいただけたら幸いです。 ・敵(ライブラリーからステージに複数配置・移動・スピード・敵同士の間隔に可変性を持たせる・弾にヒットしたら消える) ・自機(・マウスに追従・マウスクリックで弾発射・弾を制限なしで連射可・敵にヒットしたらスコア表示) ・制限時間 ・スコア表示 参考サイトなどありましたら、教えていただけると助かります。 大変申し訳ありませんが、宜しくお願いいたします。

  • 最近、戦闘機ゲームを始めたんですが ・・・

    戦闘機ゲームを始めたばかりなんですが、なかなか機銃を敵機に当てることが出来ません。 逆に自機が逃げ回っている状態でも、バンバン当てられますが、コツがあったら教えて下さい。

  • XNAでのゲーム制作で困っています

    2Dゲームの衝突判定なのですが、 キャラクターサイズの半分がめり込んだ形になってしまいます。 原因は基準座標点の取る位置です。 キャラクターは中心で、マップチップは左上になっており、今いる座標をマップサイズで割ったとしてもずれが生じるみたいです。 キャラクターが中心なのは、敵との衝突判定をやりやすくするためです。 補正をかけたとしても直りそうにないのですが、何かアイディアはありませんか? マップ描画の基準座標が中心になるように設定できればいいのか、 若しくは別の方法があればご教授お願いします。

  • Flashで、簡単なシューティングゲーム制作

    下記の内容を目標に簡単なシューティングゲームを作っているのですが、アドバイスをいただけたら幸いです。 ・敵(ライブラリーからステージに複数配置・移動・スピード・敵同士の間隔に可変性を持たせる・弾にヒットしたら消える) ・自機(・マウスに追従・マウスクリックで弾発射・弾を制限なしで連射可・敵にヒットしたらスコア表示) ・制限時間 ・スコア表示 参考サイトなどありましたら、教えていただけると助かります。 大変申し訳ありませんが、宜しくお願いいたします。

  • シューティングゲームの作り方

    また行き詰ってしまったので質問させてください。 趣味のプログラミングでシューティングゲームを作ろうと思っていて、下記URLのコードまでは完成しました。 しかし、色々と問題があります。 (1)自機が敵機に当たったときには、衝突応答の関数が実行されるのに、弾が敵に当たった時には実行されないのがなぜだかわからない。 (2)背景の画像をスクロールさせるのに効率のいい方法(できるだけ重くない処理) (3)自機を枠の外に行かないようにするには… (4)”マウスのボタンをクリックするたびに弾を発射”ではなく、”押している間は常に弾を発射する”という処理にするにはどうすればいいのか… (5)マウスを押したままでも、自機の移動を可能にするには…(画像を表示させると、クリック状態で自機の移動ができなくなる) (6)右クリックの禁止ができません。どのサイトを見ても同じようなコードしか書いてなく、そのコードでは右クリックの禁止ができません…(divにoncontextmenu="return false;") (7)その他、下記URLのコードの無駄や、ゲームを作るならもっとこういう書き方の方がいい!などありましたら教えていただけるとうれしいです。(何より動作の軽いゲームを作りたい(javascriptで。今回他の言語等は考えていません。)) (8)それから、注文が多くて申し訳ありませんが、(7)以外は下記のコードをベースに解決方法を教えていただければ幸いです。 http://www7b.biglobe.ne.jp/~k326/javascript/STG.html 8つも一度に質問するのも気が引けましたが、何度も投稿するよりは…と思ったのでまとめさせていただきました。自分なりにグーグルで10サイト以上は見て回ったのですが、解決できませんでした。(検索の仕方が悪いのかもしれません…)どうかご教授お願いします。 ※趣味の範囲なので、できれば「センスない」などの中傷はしないでください。お願いします。 ※動作チェックはIEです。とりあえずはIEでできるように…と考えています。 ※2000文字に入りきらなかったので、直接コードを記述せずにURLを載せる事にしました。