2013-03-13 4 views
1

나는 브러시 크기를 만들려고하는 2D 타일 게임을 가지고 있습니다. 현재, 내 코드는 다음과 같습니다 : 첫 타일 위에타일로 사각형을 채우기

Tiles

타일이 현재이 출력을 생성

public void setAt(int x, int y, BlockType b) { 
    if (x <= Display.getWidth()/blockSize && y <= Display.getHeight()/blockSize) { 
     blocks[x][y] = new BaseBlock(b, x * blockSize, y * blockSize); 
    } 
    render(); 
} 

:

if (isMouseClicked0) { 
    int grid_x = Math.round(mouseX/blockSize); 
    int grid_y = Math.round(mouseY/blockSize); 
    for (int x = 0; x < brushSize; x++) { 
     for (int y = 0; y < brushSize; y++) { 
      world.setAt(grid_x, grid_y, b[inventorySelect]); 
      grid_x += x; 
      grid_y += y; 
     } 
    } 
} 

setAt() 방법은 다음과 같습니다 왼쪽 상단은 마우스를 클릭 한 곳이므로 다음 타일이 렌더링되지 않음을 알 수 있습니다. 나는 몇 시간 동안이 일을 해왔으므로 나는 아마도 간단한 것을 놓치고있을 것이다. 어떤 도움이 필요합니까?

EDIT : 브러쉬 크기는 2이므로 4 개의 타일을 만들어야합니다. blockSize32입니다. 내 블록이 얼마나 큰지 알 수 있습니다.

grid_x += x; 
grid_y += y; 

당신은 기본적으로 대각선 방향으로 이동 :

답변

1

문제는 함께입니다. 더 잘 작동 할 수 있습니다.

for (int x = 0; x < brushSize; x++) { 
     for (int y = 0; y < brushSize; y++) { 
      world.setAt(grid_x + x, grid_y + y, b[inventorySelect]); 
     } 
    } 
+0

오 와우. 나는 그 생각을하지 않았다는 것을 믿을 수 없다! 정말 고맙습니다. –

+0

당신은 환영합니다 :) – wldsvc

관련 문제