2014-04-11 4 views
1

X 축을 가로 질러 특정 횟수만큼 반복하려는 기본적인 벽돌 텍스처가 있습니다. spriteBatch.Draw(...)을 반복적으로 사용하여 동일한 텍스처를 수백 개 그리는 대신에 spriteBatch.Draw(brick,vector_array[],color)과 같은 더 쉬운 방법이 있습니까? 은 텍스처이고 vector_array[]은 텍스쳐가 반복적으로 그려지는 모든 벡터 점이됩니까? 희망 오른쪽으로 반복 16 개 벽돌의 질감을 그릴 것XNA - 반복 텍스처 x 총 시간

for (int i = 0; i <= 16; i += 1) 
      { 
       spriteBatch.Draw(brick, brickXY, Color.White); 
       brickXY.X += 32; 
      } 

: 그 생각에 관련없는

, 나의 다음으로 좋은 아이디어는 그런 짓을했다. (각 텍스쳐는 32x32입니다.) 입니다. 그러나 이것은 한 프레임 동안 화면에 머물러 있습니다. 어떻게 해결할 수 있을까요?

도움 주셔서 감사합니다. : D

답변

1

다른 곳에서 BrickXY를 설정해보십시오. 이 같이 할 필요가 그래서 당신은 BrickXY 혼자하지만 자사의 배열을 설정하는 BrickXY [INT] 이 같은 시도 : 그들을 잡아 그 후 다음 설정된 값의 모든

protected override void LoadContent() 
    { 
     spriteBatch = new SpriteBatch(GraphicsDevice); 
     brick = Content.Load<Texture2D>("Whatever texture you want here"); 
     (int a = 0; a < brickXY.Length - 1; a++) 
     { 
      brickXY[a].X += (32 * a); 
     } 
    } 

또는 다른 벽돌 것 움직이기 시작하십시오.

protected override void Draw(GameTime gameTime) 
    { 
     GraphicsDevice.Clear(Color.CornflowerBlue); 
     spriteBatch.Begin(); 
     for (int i = 0; i <= brickXY.Length - 1; i++) 
     { 
      spriteBatch.Draw(brick, brickXY[i], Color.White); 
     } 
     spriteBatch.End(); 
     base.Draw(gameTime); 
    } 
+0

감사! 이것은 완전히 효과가있었습니다. 나는 for 루프에 대한 나의 메소드가 작동하지 않는 이유를 정말로 이해하지 못한다. 그러나 이것은 잘된 일이다. –

+0

실제로 여러 번 그리기 호출없이이 작업을 수행 할 수 있습니다. [이 질문] (http://stackoverflow.com/questions/7313388/xna-tiling-a-2d-texutre-to-fill-a-rectangle)을 참조하십시오. –