1

我试图Texture2D通过在到达屏幕末尾时添加 x 和 y 坐标来将 s 绘制成一条线。该Draw方法不会绘制多个精灵,它只是以 20 的速度移动第一个精灵,而不是每 20 个像素绘制一个。

protected override void Draw(GameTime gameTime)
{
    GraphicsDevice.Clear(Color.White);

    // TODO: Add your drawing code here
    spriteBatch.Begin();
    spriteBatch.DrawString(GameText, MenuText, new Vector2(325,75), Color.Red);

    do
    {  
        spriteBatch.Draw(EarthGrass, place, Color.White);
        place.X += 20;
    } while (place.X < 800);
    place.X = -20;
    place.Y += 20;
    do
    {                
        int IDBint = IDB.Next(11);
        if (IDBint == 10)
        {
            spriteBatch.Draw(PooperMachoOre, place, Color.White);
        }
        else
        {
            spriteBatch.Draw(EarthDirt, place, Color.White); 
        }
        place.X += 20; 

    } while (place.X < 800);
    place.X = -20;
    place.Y += 20;
    spriteBatch.End();
    base.Draw(gameTime);
}
4

2 回答 2

0

乍一看,您的代码看起来不错,尽管这些天我大麦看到 do 循环。我假设你想在 X 位置超过 460 像素后停止绘图因为它从 0 开始。所以只需将你翻转>到 a <,你还需要每帧重置你的 X 位置,否则它将从它离开的地方开始离开。

do
{
     place.X += 20;
     spriteBatch.Draw(EarthGrass, place, Color.White);
} while (place.X > 460);
place.X = 0;
于 2013-09-17T22:37:17.250 回答
0

如果你这样做:

do
{                
    int IDBint = IDB.Next(11);
    if (IDBint == 10)
        spriteBatch.Draw(PooperMachoOre, place, Color.White);
    else
        spriteBatch.Draw(EarthDirt, place, Color.White);

    place.X += 20;

} while (place.X < 800);

Draw将更改所有图像序列以绘制每一帧(正如Cyral所写,它每秒发生 60 次)。
您不必在Draw方法中调用随机生成器,但必须将纹理序列设置为仅绘制一次。中Initialize,例如。

于 2013-09-18T01:47:03.210 回答