我目前在方法中有一个关于局部变量的问题。由该方法生成一个行方精灵沿着屏幕的屏幕,代码底部目前看起来像这样:局部变量不变
public void spawnFloor()
{
for (int x = 0; x < floorSize/texture.Width; x++)
{
if (walls.Count < floorSize/texture.Width)
{
positionModifier.X = texture.Width * x;
position.Y = floorStart.Y;
spawnWall();
}
}
}
目前,当游戏分辨率七百二十零分之一千二百八十○,游戏派生在40个平方屏幕的右下角。整个x的值显然是0。有任何想法吗?下面是类的在它的整体的情况下,它的代码是基于什么类:
public WallManager(Texture2D texture, Vector2 floorStart, int screenLength)
{
this.texture = texture;
this.floorStart = floorStart;
floorSize = screenLength;
}
public void spawnWall()
{
Wall thisWall = new Wall(position*positionModifier, texture);
walls.Add(thisWall);
}
public void spawnTest()
{
if (walls.Count == 0)
{
position = new Vector2(0, 698);
spawnWall();
}
}
public void spawnFloor()
{
for (int x = 0; x < floorSize/texture.Width; x++)
{
if (walls.Count < floorSize/texture.Width)
{
positionModifier.X = texture.Width * x;
position.Y = floorStart.Y;
spawnWall();
}
}
}
public void Draw(SpriteBatch spriteBatch)
{
foreach(Wall wall in walls)
wall.Draw(spriteBatch);
}
}
编辑:作为建议,墙上类已经公布:
public Wall(Vector2 position, Texture2D texture)
{
wallPosition = position;
wallTexture = texture;
}
public void Update(GameTime gameTime)
{
wallWidth = (int)Math.Round((double)wallTexture.Width);
wallHeight = (int)Math.Round((double)wallTexture.Height);
wallHitbox = new Rectangle((int)wallPosition.X, (int)wallPosition.Y, wallWidth, wallHeight);
}
public void Draw(SpriteBatch spriteBatch)
{
spriteBatch.Draw(wallTexture, wallPosition, wallColor);
}
此外,positionModifier是一家民营Vector2在wallManager类中启动时的值为(1,1)
Yeap。原来,position.x的起始值为0.设置为纹理宽度并使用整个矢量代替floorStart的Y值后,该脚本按预期工作。谢啦 – CraigGame