Javaゲーム作成総合スレat GAMEDEVJavaゲーム作成総合スレ - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト326:名前は開発中のものです。 09/06/25 18:29:50 Hr5vf1Co >>319 ゲームの種類にもよるけど、ドット単位で厳格な判定をしようと言うのがそもそもの間違い。 (これはスプライト同士の場合。マウスカーソルとアイコン等、点とスプライトの判定ならドット単位でも大丈夫) 例えば、格闘ゲームの判定なんかは長方形の判定が数個配置してあるだけ。 キャラの喰らい判定も、パンチやキックの攻撃判定も、みんな2・3個の長方形で表現されている。 衝突判定が重要な格闘ゲームですらこうなんだから、他のジャンルもこんな感じ。 どうしても気になるんなら、当たり判定を複数の円や三角に分割して処理すれば軽さと精度を両立できる。 あまり細かく分割すると余計重くなるので、多少の誤差なら無視してしまってok。 STG等、敵の大群と自機の弾幕の間で判定を行なう場合の高速化方法もあるけど、 アルファを考慮して68msって規模なら必要無いので省略。 327:319 09/06/27 02:44:14 jkJfUe9s い、忙しい。コード書けねぇ。 スプライトの仕様は以下 ・スプライトの描画座標系での位置(x,y)を持つ ・スプライトのサイズ:w * hを持つ ・表示される画像を持つ ・可視性-visibleを持つ で当たり判定の実装は以下 1) 可視性をみる 2) 二つのスプライトの位置とサイズから重なっているか見る --- ここから実際にアルファ値考慮 --- 3) 二つのスプライトの共有された矩形の情報を得る 4) 3)を元に二つのスプライトの画像の共有部のみそれぞれint[]に各ピクセルのargb情報を格納 5) 4)より得た配列二つのピクセルの全アルファ値をみる 6) 見たアルファ値の両方が完全に不透過ならば当たっていると判断 こんな感じ。 それで当たり判定メソッドにアルファ値を考慮するかどうかのフラグを指定できるので、 >>320の"アルファ値判定が必要な物だけ"というのはこれをoffにすればいい。(そのとき実装の 2) までやってreturnする) それ以外は上記に挙げたこと以外は特にやっていない。 とりあえず>>324の"あらかじめ32x32くらいの判定ボリュームを用意して精度を落としてしまう" を時間がある時に実装しようと思う。 レスくれたみんなありがと。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch