カレンダービューのように、テキストと画像のグリッドがある場合。グリッド全体を45度に配置し、それでも指のクリック/スクロールに応答できるようにする場合は、どうすればよいですか?どうもありがとう!
2 に答える
これには本当に簡単な解決策があります。Expression Blendを使用してプロジェクトを開く場合は、グリッドを選択したら、[プロパティ]タブに移動し、[変換]まで下に移動します。[回転]というプロパティがあり、X:Y:Z:の値を変更するだけです。グリッドが希望どおりに回転するまで。期待どおりに動作します。
XAMLコードは次のとおりです。
<Grid.Projection>
<PlaneProjection RotationX="-43"/>
</Grid.Projection>
わかりました。XNAでこれを行う場合は、ビルボーディングを使用する必要があります。まだビルボードの必要がないので、詳細をお伝えすることはできませんが、いつものように、そのためのRiemersチュートリアルがあります。ここで、具体的には、コントロールを備えたインタラクティブな看板が必要です。これまでに3Dの経験がない場合、これは複雑になります。これがあなたがしたいことです:
- 通常のSpriteBatchの場合と同じようにコントロール/テキストを描画しますが、GraphicsDeviceのRenderTargetを事前に新しいRenderTargetに設定して保存します。レンダーターゲットの変更に関するドキュメントについては、こちらをご覧ください。コントロールを描画した後、それを元に戻すことを忘れないでください。
- 次に、明示的なキャストを使用してRenderTargetをTexture2Dに変換します。
Texture2D myTex = (Texture2D)myRenderTarget;
- このテクスチャをビルボードに描きます。
- ここで注意が必要な部分があります。「ピッキング」と呼ばれる手法を使用して、ユーザーが3D空間のどこをクリックしたかを判断する必要があります。App Hubにはいくつかのピッキングチュートリアルがありますが、それらは複雑なモデルを対象としています。ビルボードは2つの三角形を持つ平面のみを使用するため、この場合、必要な精度で機能しません。代わりに、Viewport.UnProjectを使用して平面を選択することをお勧めします。
基本的に、クリック可能なものが3D空間の看板のどこにあるかを追跡するための優れたシステムが必要になります。平面方程式を知っていれば、これに使用できます(微積分IIIでそれらを学んだと思います)。基本的な機能のみが必要な場合は、これらの方程式を使用してボタンの中心のみを追跡し、クリックの半径テストを実行できます。ただし、ボタンが円でない限り、これは完全には正確ではありません。
わからない場合は、3Dの世界で2Dの概念を適用しようとすると、事態は急速に複雑になります。