回答:
ベクトル/ポリゴンアプローチ以外に、これを行う別の方法はビットマップを使用することです。
ビットマップの各「色」が地域(フランス、ベルギーなど)を表す場合、ビットマップのどのピクセルがクリックされたかを調べ、色を調べ、その色が対象の地域を表しているかどうかを判断するだけです。特定の色で重複する領域を表現したり、色を領域のビットマスクとして扱うこともできます。
ツールに関しては、アーティスト/コンテンツプロデューサーにピクセル編集ツールでビットマップを作成してもらいます。たとえば、PhotoshopまたはGimpを使用している場合、さまざまな地域(フランス、ベルギーなど)を名前付きレイヤーまたは1つのレイヤーとして表すことができますが、色に基づいて地域を区別できます。次に、画像/レイヤーをゲーム内部の目的に適した形式に変換するツールを作成します。
ゲームの内部フォーマットは、行ごとにランレングス圧縮されている可能性が非常に高いです(http://en.wikipedia.org/wiki/Run-length_encodingを参照)。この方法で非常に優れた圧縮率を実現できるはずです。行の隣接するピクセルは同じ領域に属することが非常に多いからです。次に、アルゴリズムは、マウスの現在のy座標について、その行をトラバースし、その行が属する実行、したがって対応する領域を特定します。
ホットスポットを、画像をオーバーレイする一連のポリゴンとして定義する必要があります。次に、ユーザーがマップをクリックしたときに、ポリゴン(クリック可能なホットスポット)のリストを調べて、クリックポイントが(もしあれば)どのポイントの内側にあるかを確認します。
また、HTMLのイメージマップがどのように行われるかを調べることもできます。HTMLで作業するわけではありませんが、基本的にはHTMLを実装したいものです。ホットスポットを長方形、円、および多角形(必要なもの)として定義できます。
これは、いくつかのアイデアを提供する可能性があるHTMLイメージマップを説明するWebページです。http: //www.javascriptkit.com/howto/imagemap.shtml
ポイントがポリゴンにあるかどうかを判断するアルゴリズムに関するWikipediaの記事は次のとおりです。http: //en.wikipedia.org/wiki/Point_in_polygon
任意の形状を、線分に変換される一連の点として定義できます。
「私はこの任意の形状の内側にいる」という衝突テストは、ここでの私の答えによって与えられます。Cocos2Dでは、ユーザーが描画した任意の形状に対する衝突をどのようにチェックしますか?
この種のものでは、マスクとして使用される画像を使用し、透明/不透明または黒/白のピクセルを使用します。マスクは描画されませんが、概念的にはマスクがカバーするマップ領域上に「配置」されます。
クリックしたら、まず画像の境界ボックスをチェックします。外の場合、プレーヤーは領域をクリックしませんでした。内側にある場合は、ピクセルを確認してください。透明/黒の場合、プレーヤーは領域をクリックしていません。そうでなければ、彼はそうしました。
メモリ使用量が深刻な問題である場合は、ハーフサイズの画像を使用して、適切な画面を画像座標変換に適用できます。ピクセルパーフェクトな検出は得られませんが、この場合はおそらく必要ありません。
また、透明/不透明にする場合は、マスクをPNG(またはその他のロスレス圧縮スキーム)として保存するか、高いしきい値(アルファ> 0ではなくアルファ> 128)を使用します。そうでない場合、JPEGアーティファクトによって一部の透明ピクセルがそれほど透明に表示されない可能性があります(alpha = 0ではなくalpha = 1または2など)。