0

複数のオブジェクトが重なり合っているとします。そのうちの 1 つをクリックすると、TouchPanel.GetState() から返された座標では、どのオブジェクトが選択されているかわかりません。オブジェクトは一番上である必要はありません。この場合、オブジェクトのリストを整理して、Z 値でソートし、長方形を上から下に比較しますか。これは正しい方法ですか?または、外部イベントが発生したときにオブジェクトがコールバックを持つように、継承する何らかのコンポーネントを提供する UI フレームワークがある場合は?

4

2 に答える 2

2

XNA ゲーム ライブラリを使用している場合は、Z 値を使用して、どのオブジェクトが選択されたかを判断する必要があります。

XNA の TouchPanel.GetState() は画面上の指の位置を返すだけで、どのオブジェクトと衝突しているかはわかりません。衝突チェックはすべて自分で行う必要があります。ここで、選択するオブジェクトを Z またはレイヤー順序で決定できます。

2D オブジェクトの場合、それらに適用される特定の Z オーダーはありません (3D ではなく 2D であるため)。そのため、それを処理するプロパティをオブジェクトのクラスに追加する必要があります。

次に、位置に触れると、その位置が衝突したすべてのオブジェクトを収集し、z オーダーに基づいて必要なオブジェクトを選択できます。

それが役立つことを願っています!

于 2012-06-11T15:38:22.497 に答える
2

この XNA サンプルで開始できます。

http://create.msdn.com/en-US/education/catalog/sample/picking

Nick Funk が言ったように、2D タッチ座標があれば、上記のサンプルをゲームに適用してそれらの座標を使用するだけです。

于 2012-06-11T17:56:54.807 に答える