-1

C#のクラスを使用して乱数を生成しRandom、テクスチャを描画しようとしています。画面上のランダムな座標にテクスチャを描画しようとしていますが、以下のコードを実行しようとすると、テクスチャがランダムな空間を動き続けます。私はそれを描き、それを所定の位置に保つ必要があります。

Random _Random = new Random();
private int MaxX;
private int MaxY; //screen height and width 

public Texture2D hat;

//code to load in image

//draw code
spriteBatch.Begin();
int hatx = _Random.Next(1, MaxX);
int haty = _Random.Next(1, MaxY);

spriteBatch.Draw(hat, new Rectangle(hatx, haty, 80, 80), Color.White);
spriteBatch.End();
4

3 に答える 3

2

Random.Nextテクスチャに対してを 1 回だけ呼び出す必要があります。現在、描画操作ごとに呼び出しています。

于 2013-03-08T10:27:01.523 に答える
1
Random _Random = new Random();
private int MaxX;
private int MaxY; //screen height and width 

public Texture2D hat;

//code to load in image

// make sure x and y are initialized only once before rendering loop
int x = _Random.Next(1, MaxX);
int y = _Random.Next(1, MaxY);

//draw code
spriteBatch.Begin();
 int hatx = x;
 int haty = y;

 spriteBatch.Draw(hat, new Rectangle(hatx, haty, 80, 80), Color.White);
 spriteBatch.End();
于 2013-03-08T10:31:45.317 に答える
0

問題は、draw関数がxとyの数値を呼び出すたびに変更されることです。なぜなら、乱数は毎回新しい数を生成するからです。そのため、テクスチャは別の場所に移動します。ここで行う必要があるのは、2つのクラスメンバーをXとYにし、ContentLoad関数で乱数を生成してXとYの値を入力することです。また、描画関数では、新しいXとYを作成する代わりに、クラスメンバーXとYを使用します。

于 2013-03-08T10:31:56.620 に答える