0

そのため、現在のコードを使用して、プレーヤーのスプライトが静止オブジェクトに接触しているかどうかを検出しようとしています。バウンディングボックスのチュートリアルはすでに完了しましたが、スプライト変数の設定が異なるため、バウンディングボックスで使用されている構文が機能しませんでした。

これは私が使用しているifステートメントです。

if (spritePosition.Equals(Booksposition))
{
   spritePosition.X = 0;
   spritePosition.Y = 0;
}

必要なのは、2つが衝突しているかどうかを確認するためのC#の構文だけです。

これが私のテクスチャの設定方法です...

Texture2D myTexture;
Vector2 spritePosition = new Vector2(600,300);
Vector2 spriteSpeed = new Vector2(50.0f, 50.0f);
Texture2D Books;
Vector2 Booksposition = new Vector2(100, 300);
Vector2 BooksSpeed = new Vector2(50.0f, 50.0f);

このコードを実行すると、コンパイルと実行は行われますが、何も実行されません。

4

2 に答える 2

0

これの代わりに

if(spritePosition.Equals(Booksposition))
{
   spritePosition.X = 0;
   spritePosition.Y = 0;
}

あなたはこのようなことを試みるべきです

if(spritePosition.x >= Booksposition.x || spritePosition.y >= Booksposition.y)   
{
   spritePosition.X = 0;
   spritePosition.Y = 0;
}

オペレーターはあなた>=にとって理想的ではないかもしれませんが、私はあなたがその考えを理解していると思います。

于 2012-11-25T23:11:58.173 に答える
0

返信が遅いようですが、他の人に情報を提供するために、境界ボックスはどうですか?

2D で行うのは簡単です。次を使用するだけです。

BoundingBox myCollider = new BoundingBox((new Vector3(spritePosition.X, spritePosition.Y, 0), (new Vector3(spriteWidth, spriteHeight, 0));

各オブジェクトの周りにこれらのいずれかを描画し、次でテストします。

if (collider1.intersects(collider2)) {そこから行く}

バウンディング ボックスの代わりに四角形を使用することもできますが、私が衝突について学んでいたとき、3D ツールを使用し、z 軸の値をゼロに設定してそれらを 2D に平らに押しつぶすように言われました。

これが(誰かの)助けになることを願っています、アンドリュー。

于 2013-07-07T14:46:35.247 に答える