모노 게임 (XNA)에서 학습용으로 간단한 2 차원 스크롤링 게임을 만들려고합니다. 현재 텍스트 파일에서 타일 정보를로드하여 타일이 쓰여지는 위치에 대한 정보를 저장하는 타일 객체와 배열 (tiles [,])을 만들고 draw 메소드가 호출 될 때 어떤 텍스쳐가 사용되어야합니다. 현재 배열의 모든 타일을 한 번에 그려서 타일을 화면 전체로 이동시키는 위치를 간단히 업데이트합니다. 분명히 모든 타일을 한꺼번에 마시는 것은 약간의 고통이며, 타일을 화면에서 볼 때 그리면 더 좋을 것이라고 생각합니다. 타일이 화면을 가로 질러 이동하면 더 많은 타일이 그려집니다. 어떻게해야 할 지 잘 모르겠다. 나는 어떻게 타일을 그려야 하는지를 알 수있는 방법에 관해서는 약간 분실되었다. 도움을 주시면 대단히 감사하겠습니다. 여기 내 레벨 클래스의 그리기 및 업데이트 메소드가 있습니다. 간단히 Tile 클래스의 메소드를 호출하여 위치를 그리거나 업데이트합니다. 지금 화면에 보이는 타일을 통해 단지 루프를 시도하고 사전화면에 타일 (스프라이트) 만 그리는 방법
에
/// <summary>
/// Draws each individual tile in the level.
/// </summary>
private void DrawTiles(SpriteBatch spriteBatch)
{
// For each tile position
for (int y = 0; y < Height; ++y)
{
for (int x = 0; x < Width; ++x)
{
tiles[x, y].Draw(spriteBatch);
}
}
}
public void Update(GameTime gameTime, int scrollSpeed, ScrollDirection direction)
{
// Update the positions of each of the Background sprites
foreach (Tile tile in tiles)
{
tile.Update(gameTime, new Vector2(0, scrollSpeed), scrollDirection);
}
}
}
덕분에 그래픽 장치에서 전달 된 뷰포트를 사용하여 그립니다. 나는 기본적으로 화면의 높이를 타일의 높이로 그리고 너비를 너비로 나누어 그려주기 전에 화면에 맞을 수있는 타일 수를 얻으려고합니다. 이것은 잘 동작하며, 모든 타일을 시점에서 볼 수있게 그립니다.
유일하게 문제는 뷰포트 외부에서 시작된 타일을 더 이상 그리지 않으므로 루프가 원래 위치를 사용함에 따라 업데이트 타일에서 뷰포트로 이동하더라도 그려지지 않습니다. 수준이 만 화면에 무엇 그리는 모든 타일을 통해 루프 매우 비효율적 큰 수 있듯이 나는 :-(
하지만 모든 타일을 통해 반복하지 않고이 문제를 해결하는 방법을 생각하지 못할.
어떤 조언을 주시면 감사하겠습니다 여기
업데이트 된 무승부이다.private void DrawTiles(SpriteBatch spriteBatch)
{
float tileWidth = 40;
float tileHeight = 32;
for (int y = 0; y < (int)Math.Ceiling(mViewport.Height/tileHeight); ++y)
{
for (int x = 0; x < (int)Math.Ceiling(mViewport.Width/tileWidth); ++x)
{
tiles[x, y].Draw(spriteBatch);
}
}
}
간단한 2D 카메라 예를 X 및 Y 속성을 필요 http://pastebin.com/jrGXWfNh 그것은 단지 카메라가 무엇을 보여 그것은 그려진 사각형 작동하는 방법 참조로. 아주 이해하기 쉽도록 상당히 간단합니다. 그런 다음 화면에 한계가 있음을 알게되면 카메라가있는 곳을 확인하고 다른 사각형이 화면의 "내부"에 있는지 확인한 다음 그리거나 그리지 않습니다. – Deukalion
감사합니다 Deukalion, 나는 그것을 얻을 것 같아요. –