현재 메소드의 로컬 변수에 관한 문제가 있습니다. 방법은 화면이나 코드의 하단에 사각형 스프라이트의 라인을 산란하게되어 현재 같은 보이는 : 현재로컬 변수가 변경되지 않습니다.
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();
}
}
}
, 게임 해상도가 720분의 1,280 일 때, 게임은 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이다 시작시 값 (1,1)이있는 wallManager 클래스에서
Yeap. position.x의 시작 값이 0 이었음을 나타냅니다. 텍스처 폭으로 설정 한 후 floorStart의 Y 값 대신 전체 벡터를 사용하면 스크립트가 의도 한대로 작동합니다. 고마워. – CraigGame