2012-01-24 31 views
0

現在、SlimDXを使用してC#で小さなゲームエンジンを作成しています。ID2D1PathGeometryからのパスセグメントの取得

自分の世界が破壊的になりたいので、マップを変更できる必要があります。私のマップは現在ベクトルベースで、ID2D1PathGeometry(SlimDXのPathGeometry)オブジェクトで表されています。このオブジェクトは、ID2D1GeometryのCombineWithGeometryメソッド(SlimDXのジオメトリ)を使用して変更されています。

合理的な衝突検出のためには、壁のボールのバウンド角を計算するなど、ID2D1PathGeometryオブジェクトの正確な形状に関する知識が必要です。

したがって、ID2D1PathGeometryオブジェクトのすべてのまたは特定の(場所ごとの)セグメンテーション/ライン/ポイントにアクセスできますか?または、私の目標を達成するための他の、より良い方法がありますか?すべての線と図形を別のデータ構造に追加保存する

私はマップサイズの制約としてメモリを持ちたくないので、ビットマップベースのマップはここに行く方法ではありません。

よろしくと

、エミ

答えて

1

だけで特定のポイントに近いジオメトリ・セグメントを取得する方法はありませんが、すべてのジオメトリ・セグメントを取得する方法があります。

  1. ID2D1SimplifiedGeometrySinkから継承するクラスを実装します。
  2. そのクラスのインスタンスを作成し、ID2D1Geometry :: Simplifyに渡します。

詳細情報および例あなたが近い特定のポイントに一部だけを取り出すことに興味があるなら、ここでHow to Retrieve Geometry Data by Extending ID2D1SimplifiedGeometrySink

あり、おそらくあなたがしたい:

  1. ポイントを囲む長方形の形状を作成します。興味を持っている。
  2. D2D1_COMBINE_MODE == D2D1_COMBINE_MODE_INTERSECTを使用して、ID2D1Geometry::CombineWithGeometry経由でジオメトリと交差します。
  3. 上記の方法で交差ジオメトリのシンクを取得します。

さらに詳しい情報:ID2D1Geometry::CombineWithGeometry method

関連する問題