トップページ > 過去ログ > 記事閲覧
状況によってくらい判定を変える方法を教えてください
名前:未熟者Y 日時: 2006/12/04 16:45

どうもお久しぶりです。 現状だと常に食らい判定が一定なのでキャラの動きによって食らい判定を変えたいのですがどうしたらいいのでしょうか? 現状はキャラセレクト画面で各キャラのJicharaInit()を呼び出しています。(食らい判定と弾の当たり判定の情報が入っている) //自キャラデータの初期化 void JicharaInit(){ jikidata.ghandle = jiki1png; jikidata.ghandle2 = jiki1_a; jikidata.ghandle3 = jiki1_u; jikidata.ghandle4 = jiki1_d; jikidata.ghandle5 = jiki1_shot; jikidata.ghandle6 = jslashpng; jikidata.animpat = 3; jikidata.x=0; jikidata.y=200; jikidata.image_w = 64; jikidata.image_h = 64; jikidata.bounds_w = 15; jikidata.bounds_h = 43; jikidata.amode = A_HARD; jikidata.life = 4; jikilife = jikidata.life; for(int i = 0; i<5; i++){ jitama[i].ghandle = &jitamapng; jitama[i].animpat = 1; jitama[i].image_w = 32; jitama[i].image_h = 16; jitama[i].bounds_w = 32; jitama[i].bounds_h = 16; jitama[i].life = 0; jitama[i].amode = A_NORMAL; } for(int i = 0; i<5; i++){ jslash[i].ghandle = jslashpng; jslash[i].animpat = 4; jslash[i].x=0; jslash[i].y=200; jslash[i].image_w = 64; jslash[i].image_h = 64; jslash[i].bounds_w = 80; jslash[i].bounds_h = 80; jslash[i].life = 0; jslash[i].amode = A_HARD; } } どう聞いたら言いのか分からない部分があるので書き足らない事があるかもしれません。(毎度の事で申し訳ない)

Page: 1 |

Re: 状況によってくらい判定を変える方法を教えてください ( No.1 )
名前:未熟者Y 日時:2006/12/05 09:43

書き忘れたので流れを書いておきます。 タイトル画面 ↓ キャラセレクト キャラのIDに対応してJicharaInit()を呼び出す。 ↓ ステージセレクト ↓ メイン キャラのIDに対応した自キャラ、自弾移動処理関数呼び出し ↓ ゲームオーバーORゲームクリア画面へ ↓ タイトルに戻る
Re: 状況によってくらい判定を変える方法を教えてください ( No.2 )
名前:Will 日時:2006/12/05 10:10

いくつか質問 1. 食らい判定とはなんですか?敵の弾が自機に当たったかどうかの被弾判定のことですか? 2. 「現状だと常に食らい判定が一定」とありますが、現状がどういう状態なのか 具体的に説明をお願いします。 3. 「キャラの動きによって変えたい」とありますが、具体的にキャラがどう いう動きをした時にどういった判定をしたいのでしょうか? 例えば、シューティングではないですがK.O.Fのようにプレイヤーの操作による 避けモーションがあってその時は攻撃があったっても無効としたいとか。
Re: 状況によってくらい判定を変える方法を教えてください ( No.3 )
名前:未熟者Y 日時:2006/12/05 10:51

また伝わりにくい文章を書いて申し訳ないです。 食らい判定で通じないとは思わなかったもので。(言い訳になりますが) 1・食らい判定とは、敵の攻撃もしくは敵に接触した時にダメージを受ける判定の事です。 2・キャラがどう動いても食らい判定が同じと言う意味です。(そういう仕様なので改良したい) jikidata.bounds_w = 15;(横の判定) jikidata.bounds_h = 43;(縦の判定) 3・例えば、しゃがんだら食らい判定が小さくなるみたいにキャラのモーションによって食らい判定の大きさが変わるようにしてみたいと思っています。 避けモーションと言うのもいいですね。 やっぱり自分の思っていることを文章のみで人に伝えるのは難しいですね。
Re: 状況によってくらい判定を変える方法を教えてください ( No.4 )
名前:Will 日時:2006/12/05 12:50

回答ありがとうございます。 当たり判定処理自体を変えずにということであれば、単純にbounds_w、bounds_hの値 を大きくしたり、小さくしたりすることで当たりやすくなったり、当たりにくくなっ たりを変得ることが出来るのではないでしょうか。 それに合わせて自機キャラの絵を変化させれば、避ける動作も表現できると思いま すがどうでしょうか。 例えば、あるアイテムを取ると自機が大きな絵に変わって攻撃力が上がるけど当たり 判定も大きくなるとか。(ありがちなネタですが)
Re: 状況によってくらい判定を変える方法を教えてください ( No.5 )
名前:未熟者Y 日時:2006/12/06 17:15

いつも回答ありがとうございます。 >当たり判定処理自体を変えずにということであれば、単純にbounds_w、bounds_hの値 を大きくしたり、小さくしたりすることで当たりやすくなったり、当たりにくくなっ たりを変得ることが出来るのではないでしょうか。 それに合わせて自機キャラの絵を変化させれば、避ける動作も表現できると思いますがどうでしょうか。 現在はキャラセレクトでキャラ決定時にJicharaInit()を呼び出しているわけですが、 ゲームメインでも当たり判定処理を呼び出せるようにすれば変えれるのでしょうか?。 その上でキャラの動作から何らかの値を受け取ってそれに応じてbounds_w、bounds_hの値を変えると言うのは可能でしょうか? また、アドバイスがいただけたなら幸いです。
Re: 状況によってくらい判定を変える方法を教えてください ( No.6 )
名前:Will 日時:2006/12/07 10:08

JicharaInit関数はキャラデータの初期化処理であるため、キャラセレクト決定時に呼び出していることは正しいと思います。 >ゲームメインでも当たり判定処理を呼び出せるようにすれば変えれるのでしょうか?。 この文章の意味するところがいまいち理解出来ませんでした。(ゲームメインという のがどういった機能を持っているのかがなのか不明なので) 当たり判定処理がどのような構造であるかわからないため、ピンポイントなアドバイ スは難しいですが、当たり判定でHITと判断するする範囲としてbounds_w、bounds_hの 値を使用しているのであれば、キャラの動作を判定している箇所で、動作結果によっ てにbounds_w、bounds_hの値を書き換えるようにすれば、それほど複雑ではないと思 います。
Re: 状況によってくらい判定を変える方法を教えてください ( No.7 )
名前:未熟者Y 日時:2006/12/07 17:06

いつも素早いアドバイスありがとうございます。 >ゲームメイン また言葉が足りませんですいません。 ゲームメインとは、実際にゲームを初めてキャラを動かして敵と戦う所だと私は考えています。 >当たり判定処理がどのような構造であるかわからないため、ピンポイントなアドバイ スは難しいですが、当たり判定でHITと判断するする範囲としてbounds_w、bounds_hの 値を使用しているのであれば、キャラの動作を判定している箇所で、動作結果によっ てにbounds_w、bounds_hの値を書き換えるようにすれば、それほど複雑ではないと思 います。 やはりキャラの動作から何らかの値を受け取ってそれに応じてbounds_w、bounds_hの値を変えるといい方法を取ればいいんですね。 時間を見つけて頑張っていきたいと思います。
Re: 状況によってくらい判定を変える方法を教えてください ( No.8 )
名前:未熟者Y 日時:2006/12/11 18:16

新たにvoid JcHitHantei()と言う関数を作ってゲー ム中に呼び出せるようにしたら、あるボタンを押し たら食らい判定が変わるように出来ました。 Willさんアドバイスありがとうございました。 今後はこれを更に改良していきたいと思います。 以下ソース void JcHitHantei(){ if(j1hit == 0){ jikidata.ghandle = jikibmp; jikidata.animpat = 3; jikidata.image_w = 64; jikidata.image_h = 64; jikidata.bounds_w = 15; jikidata.bounds_h = 48; jikidata.amode = A_HARD; } if(j1hit == 1){ jikidata.ghandle = jikibmp; jikidata.animpat = 3; jikidata.image_w = 64; jikidata.image_h = 64; jikidata.bounds_w = 600; jikidata.bounds_h = 600; jikidata.amode = A_HARD; } }

Page: 1 |