我正在尝试使用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();
答案 0 :(得分:2)
你需要为纹理调用Random.Next
一次。目前,您正在为每次绘制操作调用它。
答案 1 :(得分: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();
答案 2 :(得分:0)
问题是每次绘制函数调用x和y数都会改变。因为每次随机数都会生成一个新数字。所以你的纹理会移动到不同的地方。你需要做的是创建两个类成员X和Y,并在ContentLoad函数中生成随机数并填充X和Y值。并且在绘制函数中使用类成员X和Y而不是创建新的X和Y。