2012-03-26 16 views
0

xの最後の部分に到達すると、新しいセクションが形成されたセクションで自分の世界(ランダム、無限、2d)を生成しています。セクション1で丘がある場合、セクション2でそれらの丘が継続するように、どうすればいいですか?私はこれを起こすことができる何らかの方法がありますか?手続き的世界の生成

だから、私は今これを取得この

1 =生成された土地

2つのもの

に記入します

2 =非生成された土地のようになります。

enter image description here

enter image description here

このフローを改善する方法はありますか?

あなたは丘の間のデルタ(差)を生成し、(変更が大きすぎることはありませんので)固定値で頂いた場合、あなたが運ぶことができます:私が正しくあなたの問題を理解している場合

+0

丘が上から下まで続きます。あなたは彼らが連続していないということを何を意味しますか? – Adrian

+0

フリップエフェクトはスクリーンショット機能のイメージミラーによるものですが、問題は崖が急激に切断されることです – blazingkin

答えて

2

これは単なるアルゴリズムの問​​題のようです。あなたの世代メカニズムには出発点が必要です。最初の呼び出しでは、それは後の呼び出しで前の "チャンク"の終了位置になると、0となります。

私がこれをやっていたのであれば、次のポイントプラスのマイナスの高さを、以前のものから0-3と言うことができます。 +/- 1時間の10%、+/- 2時間の25%、0の時間の25%、+/- 1時間の40%です。

2

は、ここソリューションです。新しいセクションを生成する際の前のセクションの最後のヒルの値を超え、(新しいセクションの)最初の無作為ジェネラートデルタを、持ち越されたヒルサイズに適用します。

1

これらの「丘」を順番に生成する場合、私は、次のセクションを開始するための値で前記の丘の継続を提供するアクセサメソッドを作成します。 1つのセクションに丘を描画するときに、丘の任意の高さをいくつかの値で制約するように作成しているようです。この新しいアクセサメソッドでその機能を拡張してください。

私はこれを可能な限り実装しています。

public class DrawHillSection { 
    private int index; 
    private int x[50]; 
    public void drawHillSection() { 
     for(int i = 0; i < 50; i++) { 
      if (i == 0) { 
       getPreviousHillSectionHeight(index - 1) 
      } 
      else { 
       ... 
       // Your current implementation to create random 
       // height with some delta-y limit. 
       ... 
      } 
     } 
    } 

    public void getPreviousHillSectionHeight(int index) 
    { 
     return (x[49].height); 
    } 
}