| WOLF RPGエディター(ウディタ)[3.650]/演出・システム【サイトトップへ戻る】 ■画像ファイルのアルファ値で当たり判定を処理 (更新:2025/10/18) 画像ファイルのアルファ値(不透明度)を取得して、当たり判定を処理する方法を紹介します。 
 ■四角形の当たり判定とアルファ値の当たり判定を比較 弾丸を当てるシューティングゲームの当たり判定を作る場合、 通常はターゲットの画像に弾丸の画像が重なったらダメージ(弾丸は消去)と言った処理を作ります。 しかし下図のように透明な部分が多くある場合は、 単に「画像同士が重なった」では、ターゲットから離れた位置でも「当たった」となってしまいます。 ▼水色の部分と弾丸が重なった瞬間に「当たった」と判定されてしまう  このような透明な部分が多い画像の当たり判定を処理する場合は、 当たり判定を処理する部分を指定する必要があります。 ■四角形の当たり判定 下図は当たり判定の範囲を四角形で設定した時の設定例です。 ▼赤い部分が当たり判定の範囲となる  1つの四角形で当たり判定を設定すると、 羽や尻尾などのはみ出した部分が当たり判定の範囲外になったり、 画像の右下にある広く透明な部分が当たり判定の範囲内になったりします。 より画像内容に合わせた当たり判定を設定する場合は、 下図のように四角形の当たり判定の数を増やす必要があります。 ▼四角形の当たり判定を10箇所に増やした時  四角形の当たり判定の数を増やすと、より細かい当たり判定の範囲を設定する事ができますが、 しかし四角形の当たり判定の数が増えれば増えるほど、処理負担が大きくなります。 例えば「弾丸100発 × 敵10体(敵1体で当たり判定10箇所)」の場合は、 1フレームごとに最大で1万箇所の当たり判定を処理する事となり、 処理落ちなどの問題が発生しやすくなります。 また画像ごと(敵キャラごと)に独自の四角形の当たり判定を設定する必要があり、 その準備に手間と時間がかかります。 ■アルファ値の当たり判定 アルファ値(不透明度)の当たり判定は、 画像ファイルから指定した座標(弾丸がある座標)のアルファ値を取得し、 アルファ値が1以上の時(透明ではない時)に「当たった」と判定します。 四角形の当たり判定とは異なり、事前に当たり判定の範囲を設定しておく必要はありません。 また1ピクセル単位の細かい当たり判定を行う事ができるため、 例えば下図の赤い矢印が示す数ピクセルの幅しかない羽の先端でも、ちゃんと当たり判定が機能します。  羽や尻尾などを動かすアニメーションを行った場合は、 そのアニメーションの動きに合わせて、当たり判定の範囲を変化させる事ができます。 欠点としては、四角形の当たり判定と比べると様々な制約があり、 またイベント設定が複雑化する場合があります。 詳しくは下記にある■アルファ値の当たり判定は万能ではないをご覧ください。 ▲トップへ戻る▲ ■画像ファイルからアルファ値を取得する方法 弾丸がある位置のアルファ値を取得する場合は、まず弾丸が画像の上にあるかどうかを調べます。  弾丸が画像の上に無い場合は、この時点でこの弾丸の当たり判定の処理を中止します。 弾丸が画像の上にある場合は、画像の左端と上端から弾丸までの距離を測ります。  距離を測ったら、イベントコマンド【文字列操作】の「隠しコード」の 
 ※文字列変数の2〜4行目にはR値、G値、B値が保存されています。 取得したアルファ値は、 アルファ値「0」=透明 アルファ値「1以上」=不透明 となっているため、「1以上」だった場合は「当たった」と判断します。 なお「1以上」ではなく「20以上」などで処理すると、 画面上では認識し辛い不透明度[1〜19]の半透明の部分を「当たっていない」と処理する事ができます。 ▲トップへ戻る▲ ■アルファ値の当たり判定は万能ではない アルファ値の当たり判定は、あくまで当たり判定の処理方法の1つに過ぎず、 万能な処理方法と言う訳ではありません。 以下の表には、アルファ値の当たり判定のデメリットな部分を記載しています。 
 四角形とアルファ値のどちらの処理が良いのかは、処理する内容によっても変わってきます。 例えば主人公やマップイベントの当たり判定をアルファ値で設定する場合は、 以下のような問題が発生します。 
 上記の仕様を見る限り、普通に1つの四角形の当たり判定で処理した方が良いと言えるでしょう。 アルファ値の処理は、必ずしも「他の当たり判定よりも優れている」と言う訳ではなく、 単に当たり判定の処理方法の1つに過ぎません。 ▲トップへ戻る▲ ■動作確認用のコモンイベント 動作確認用のコモンイベントを用意しました。 【クリックしてコモンイベントをダウンロードする】 ダウンロードしたら、右クリック→「すべて展開」で圧縮データを解凍し、 ファイル「アルファ値の当たり判定.common」をウディタのコモンイベントに読み込んでください。 そしてテストプレイを実行し、右クリックで動作確認用のコモンイベントを起動してください。 ▼動作イメージ(マウスポインタの位置から8方向に弾丸を発射した時)  アルファ値の当たり判定の設定方法は、動作確認用のコモンイベントの中を見て確認してください。 ▲トップへ戻る▲ ◎関連ページ ◆画像の当たり判定について ┗◆画像ファイルのアルファ値で当たり判定を処理 |