-1

我正在尝试使用Randomc# 中的类生成一个随机数来绘制纹理。我正在尝试将纹理绘制到屏幕上的随机坐标,但是当我尝试运行下面的代码时,纹理会一直在随机空间中移动。我需要把它画出来,让它留在原地。

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一次。目前,您正在为每个绘制操作调用它。

于 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

问题是每次绘制函数调用 x 和 y 数字都会改变。因为每次随机数都会生成一个新数。所以你的纹理会移动到不同的地方。您需要在这里做的是让两个类成员 X 和 Y,并在 ContentLoad 函数上生成随机数并填充 X 和 Y 值。并且在绘制函数中使用类成员 X 和 Y 而不是制作新的 X 和 Y。

于 2013-03-08T10:31:56.620 回答