2016-04-12 11 views
0

現在、私は小さなゲームを開発しています。私は壁としていくつかのブロックしか持っていないので、私は本当に自動タイリングを実装したいと思っています。しかし、それを行う方法?私はそれについてのチュートリアルを見つけられませんでしたが、gamemakerのためのチュートリアルは見つかりませんでしたが、それはjavaで動作しません:/Java/Libgdx auto tile

私はすでにブロックの隣人を見つけようとしましたが、コーナーの隣人を探しますか?そうですか?

このようなメカニックを実装する方法を知っている人はいますか? :)

------------- EDIT --------------

ので、病気のwikiを見て、いくつかのチュートリアルゼのRubeusは、それが解決されるだろうと思ったが、左に一つの問題をtheresの:

Wall problem

それは動作しますが、一つのブロックが別に触れるが、すぐに4つのブロックのブロックがありますように、それは文句を言わない、もう働きます。ノーマリーは、ブロックが左の隣に囲まれているとき、右のものと一つ下のものもまた、右と左の下がコーナーにあり、他のイメージを描くはずです。左と右の部分で見ることができます。ところで、値2は壁です。ここに私がやったことだ:

//------------------------------------------------------------------ 
        //--------------------Checking for all sides------------------------ 
        //------------------------------------------------------------------ 

        // got an under neighbour 
        directions[2] = copyOfMap[((int) y)-1][(int) x] == 2; 

        // got an upper neighbour 
        directions[0] = copyOfMap[((int) y)+1][(int) x] == 2; 

        // got an left neighbour 
        directions[1] = copyOfMap[((int) y)][(int) x-1] == 2; 

        // got an right neighbour 
        directions[3] = copyOfMap[((int) y)][(int) x+1] == 2; 

        //------------------------------------------------------------------ 
        //--------------------Checking for corners-------------------------- 
        //------------------------------------------------------------------ 


        corners[0] = copyOfMap[y-1][x+1] == 2 ; 

        corners[2] = copyOfMap[y-1][x-1] == 2; 

        corners[3] = copyOfMap[y+1][x-1] == 2; 

        corners[1] = copyOfMap[y+1][x+1] == 2; 





        // Right 
        if(directions[3]){ 

         if(directions[2]){ 

          if(directions[1] && corners[1] && corners[3]){ 

           region = game.manager.get("DuengonGainersAtlas/DuengonGainersAtlas",TextureAtlas.class).findRegion("Duengon-WallSet"); 
           region.setRegion(32, 0, 32, 32); 

           wallLayer.add(region, (x*100)/Box2dVars.UNIT, (y*100)/Box2dVars.UNIT,100/Box2dVars.UNIT,100/Box2dVars.UNIT); 


          } 
          else{ 
           region = game.manager.get("DuengonGainersAtlas/DuengonGainersAtlas",TextureAtlas.class).findRegion("Duengon-WallSet"); 
           region.setRegion(0, 0, 32, 32); 

           wallLayer.add(region, (x*100)/Box2dVars.UNIT, (y*100)/Box2dVars.UNIT,100/Box2dVars.UNIT,100/Box2dVars.UNIT); 
          } 

         } 
         else if(directions[0]){ 

          region = game.manager.get("DuengonGainersAtlas/DuengonGainersAtlas",TextureAtlas.class).findRegion("Duengon-WallSet"); 
          region.setRegion(0, 64, 32, 32); 

          wallLayer.add(region, (x*100)/Box2dVars.UNIT, (y*100)/Box2dVars.UNIT,100/Box2dVars.UNIT,100/Box2dVars.UNIT); 

         } 
         else{ 

          region = game.manager.get("DuengonGainersAtlas/DuengonGainersAtlas",TextureAtlas.class).findRegion("Duengon-WallSet"); 
          region.setRegion(32, 0, 32, 32); 

          wallLayer.add(region, (x*100)/Box2dVars.UNIT, (y*100)/Box2dVars.UNIT,100/Box2dVars.UNIT,100/Box2dVars.UNIT); 

         } 
        } 





        // Left 
        else if(directions[1]){ 

         if(directions[2]){ 

          if(directions[3] && corners[1] && corners[3]){ 

           region = game.manager.get("DuengonGainersAtlas/DuengonGainersAtlas",TextureAtlas.class).findRegion("Duengon-WallSet"); 
           region.setRegion(32, 0, 32, 32); 

           wallLayer.add(region, (x*100)/Box2dVars.UNIT, (y*100)/Box2dVars.UNIT,100/Box2dVars.UNIT,100/Box2dVars.UNIT); 


          } 
          else{ 
           region = game.manager.get("DuengonGainersAtlas/DuengonGainersAtlas",TextureAtlas.class).findRegion("Duengon-WallSet"); 
           region.setRegion(128, 0, 32, 32); 

           wallLayer.add(region, (x*100)/Box2dVars.UNIT, (y*100)/Box2dVars.UNIT,100/Box2dVars.UNIT,100/Box2dVars.UNIT); 
          } 

         } 
         else if(directions[0]){ 

          region = game.manager.get("DuengonGainersAtlas/DuengonGainersAtlas",TextureAtlas.class).findRegion("Duengon-WallSet"); 
          region.setRegion(128, 32, 32, 32); 

          wallLayer.add(region, (x*100)/Box2dVars.UNIT, (y*100)/Box2dVars.UNIT,100/Box2dVars.UNIT,100/Box2dVars.UNIT); 

         } 
         else{ 
          region = game.manager.get("DuengonGainersAtlas/DuengonGainersAtlas",TextureAtlas.class).findRegion("Duengon-WallSet"); 
          region.setRegion(32, 0, 32, 32); 

          wallLayer.add(region, (x*100)/Box2dVars.UNIT, (y*100)/Box2dVars.UNIT,100/Box2dVars.UNIT,100/Box2dVars.UNIT); 
         } 

        } 





        // Up 
        else if(directions[0]){ 

         if(corners[2]){ 

          region = game.manager.get("DuengonGainersAtlas/DuengonGainersAtlas",TextureAtlas.class).findRegion("Duengon-WallSet"); 
          region.setRegion(0, 32, 32, 32); 

          wallLayer.add(region, (x*100)/Box2dVars.UNIT, (y*100)/Box2dVars.UNIT,100/Box2dVars.UNIT,100/Box2dVars.UNIT); 

         } 
         else if(corners[3]){ 

          region = game.manager.get("DuengonGainersAtlas/DuengonGainersAtlas",TextureAtlas.class).findRegion("Duengon-WallSet"); 
          region.setRegion(0, 32, 32, 32); 

          wallLayer.add(region, (x*100)/Box2dVars.UNIT, (y*100)/Box2dVars.UNIT,100/Box2dVars.UNIT,100/Box2dVars.UNIT); 

         } 
         else{ 
          region = game.manager.get("DuengonGainersAtlas/DuengonGainersAtlas",TextureAtlas.class).findRegion("Duengon-WallSet"); 
          region.setRegion(0, 32, 32, 32); 

          wallLayer.add(region, (x*100)/Box2dVars.UNIT, (y*100)/Box2dVars.UNIT,100/Box2dVars.UNIT,100/Box2dVars.UNIT); 
         } 

        } 





        // Down 
        else if(directions[2]){ 


         region = game.manager.get("DuengonGainersAtlas/DuengonGainersAtlas",TextureAtlas.class).findRegion("Duengon-WallSet"); 
         region.setRegion(0, 32, 32, 32); 

         wallLayer.add(region, (x*100)/Box2dVars.UNIT, (y*100)/Box2dVars.UNIT,100/Box2dVars.UNIT,100/Box2dVars.UNIT); 


        }      

は明らかにそれを書いたので、あなただけのwallLayer.addと質感のものを無視する:)それを見できれば、それはいいだろう。

素晴らしい一日^^

+0

これを行うミニクラフトと呼ばれるゲームジャムゲームがあり、Javaで書かれています。あなたはアイデアを得るためにソースコードを調べることができます。 – Tenfour04

+0

あなたの答えをありがとう:)既にそれをしましたが、Notchはやや複雑すぎました – genaray

+0

誰かがアイデアを得ましたか? – genaray

答えて

1

Libgdxを持っているがautoに機能を持っていない代わりに、あなたはもののこの種を行うには、あなたのオーウェンalgorithmeを実装する必要があり、あなたのためのタイルを生成します。

は、私もここであなたがLIBGDXに実装することができます手続き上生成されたダンジョンの洞窟システムを作成する方法についてprogrammatically generates tilemapを提供exemple、およびhere火格子tutorielは、あなたが公式WIKIでthisセクションを読むことを示唆しています。

+0

あなたの素早い答えをありがとう:)私は私のコードを見ることができたら私の答えを更新した、私は非常に幸せだろう^^ - – genaray