[英]Autodraw Texture2D without writing multiple lines repeatedly
我试图通过在到达屏幕末端时将x和y坐标添加到一行中来绘制Texture2D
。 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);
}
乍看之下,您的代码看起来还不错,即使我最近看过do循环也是如此。 我假设你要停止拉伸后的X位置超过 460个像素,因为它从0开始。所以,简单地翻转你>
到<
,你还需要重置您的X位置每一帧,否则它会从哪里开始它停了下来。
do
{
place.X += 20;
spriteBatch.Draw(EarthGrass, place, Color.White);
} while (place.X > 460);
place.X = 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
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.