2015-07-26 5 views
0

Я хотел бы попросить некоторую помощь в преобразовании моей 2d-карты, импортированной из текстового файла, в формат изометрической карты. Я просмотрел совсем немного, но все-таки новичок в java, и я больше «смотрю на пример кода», а не на wriiting. НИЧЕГО было бы полезно в этот момент. Я также посмотрел здесь >>How can i convert x-y position to tile x-y for isometric tile? < < и здесь >>Drawing Isometric game worlds < < Я чувствую, что я почти там, но я просто все понял. Спасибо.Может ли кто-нибудь помочь мне преобразовать карту 2d в изометрическую карту?

for(int row = rowOffset; row < rowOffset + numRowsToDraw; row++) { 

     if(row >= numRows) break; 

     for(int col = colOffset; col < colOffset + numColsToDraw; col++) { 

      if(col >= numCols) break; 
      if(map[row][col] == 0) continue; 

      int rc = map[row][col]; 
      int r = rc/numTilesAcross; 
      int c = rc % numTilesAcross; 

      x = (col/Tile_H) + (row/Tile_W); 
      y = (row/Tile_W) - (col/Tile_H); 

      g.drawImage(
       tiles[r][c].getImage(), 

       //(((y/Tile_HH) - (x/Tile_HW))/2) + col * tileSize, 
       //(((y/Tile_HH) + (x/Tile_HW))/2) + row * tileSize, 

       //x, 

       //y, 


       x + col * tileSize, 
       y + row * tileSize, 
       null 
      ); 

     } 

    } 
+0

plz я получил значок «Tumbleweed» ... – exalented

ответ

1

Вот формула для преобразования 2D-координаты в ISO координаты:

Для [I, J] координаты -> (осторожны, IJ что-то вроде этого: 0, 1, а не сырые координаты (в пикселях я имею в виду).

I = (y - x) * (tileWidth/2) 
J = (x + y) * (tileHeight/2) 

Затем добавьте 2 коррекций (сверху и слева, чтобы отобразить карту в центре экрана)

Однако я не уверен, если ваша проблема была формула, как я не c ода в джаве.

 Смежные вопросы

  • Нет связанных вопросов^_^