2

私はまだXNAに慣れていないので、この投稿の愚かな質問や発言はご容赦ください(追加の問題は、.Net4.0でVisualStudio 2010を使用していることです。これは、Web上に存在する例が非常に少ないことも意味します。簡単に見つけることができます):

XNAの詳細を学ぶために使用している「ゲーム」に2つの2Dオブジェクトがあります。これらの2つのオブジェクトがいつ交差するかを理解する必要があります。

Texture2Dオブジェクトには、「Bounds」という名前のプロパティがあり、「Intersects」という名前のメソッドがあり、引数としてRectangle(他のTexture2D.Bounds)を取ります。

ただし、コードを実行すると、オブジェクトが画面の別々の側にある場合でも、オブジェクトは常に交差します。コードに足を踏み入れると、Texture2D境界の場合、境界とXの上にマウスを置くと、4つのパラメーターが返され、Y座標は両方のオブジェクトで常に「X = 0、Y = 0」になります(したがって、常に交差する)。

私を混乱させるのは、BoundsプロパティがオブジェクトのPosition(またはVector2)ではなくTextureにあるという事実です。最終的に、オブジェクトとその位置を取り込んで、それらが交差するかどうかを計算する小さなヘルパーメソッドを作成しましたが、もっと良い方法があるはずです。

任意の提案、ポインタをいただければ幸いです。

ギニア

4

2 に答える 2

1

の操作を簡素化するためBoundsに、プロパティがクラスに追加されました。詳細はこちらTexture2DViewports

テクスチャをオブジェクト自体であると考えるべきではありません。それは、Spriteまたはに使用されているかどうかに関係なく、画面に描画されるデータを保持するものにすぎませんRenderTarget。オブジェクトまたはスプライトの位置と、位置/移動の処理方法は完全にあなた次第であるため、これを自分で追跡して処理する必要があります。これには、境界の位置が含まれます。

すでに見つけたように、2DRectangleCollisionチュートリアルは良いスタートです:)

于 2010-04-21T17:21:16.093 に答える
0

BenSによるstackoverflowへの別の投稿に基づいたXNACreatorClubチュートリアルを見つけましCollision Series 1:2DRectangleCollisionチュートリアルですべてを説明しています。

交差メソッドを実行しようとするたびにゲーム内を移動する元の長方形に基づいて、新しい長方形を作成する必要があるようです。これには、更新されたX座標とY座標が含まれます。

元のオブジェクトの長方形の位置を最新の状態に保つことができない理由はまだよくわかりませんが、これが機能する方法であれば、それで十分です...今のところ。;-)

于 2010-04-21T07:58:35.350 に答える