2017-03-26 10 views
0

私はUnityとC#を初めて使用しています。しかし、私はBlockと呼ばれるオブジェクトのプレハブを作った単純な2Dプラットフォームゲームを作ろうとしています。私ができるようにしたいのは、0と1の配列タイルマップを作成することです。ここで1はブロックであり、0は何もありません。また、私はタイルマップをランダムにしたくありません。ブロックをGameControllerという別のオブジェクトからインスタンス化する必要があります。私が達成したいことの完璧な例は、このようなものです。Unity 2D配列のタイルマップ

enter image description here

しかし、私は本当に配列でこれを行う方法を知りません。私は統一とC#がどのように機能するかを学ぼうとしているので、物事を単純にしたい。どんな助けもありがとう。

答えて

0

アセットストアの一部の資産を使用することができます(例:https://www.assetstore.unity3d.com/en/#!/list/2965-procedural-generation)これは非常に難しい課題です。私はこのビデオをお勧めします:https://www.youtube.com/watch?v=k1pWpYEt2UEですが、あなたが達成したいことに最も近いものはこの1つです:https://www.youtube.com/watch?v=gIUVRYViG_g 希望しました。

+0

このビデオは確かに役に立ちますが、タイルマップをランダムにしたくないということを忘れてしまったと思います。タイルが0と1、1を使用して配列を通過することを指定できるようにしたいブロックの場合は0、何もない場合は0です。 –

+0

私はこれがあなたの目標に似ていると思う:https://www.youtube.com/watch?v=93o_Ad5C5Ds彼が作品を手配する方法は、あなたのタイトルを置く方法である。唯一の違いは彼の配列が行くということだ10101010と次の行より – pasotee

0

2次元配列を作ることができます。 int [40,100]を2回ループし、配列内の数字が1の場合は、配列の位置にブロックの長さまたは幅をそれぞれ掛けます。たとえば:

int[,] positions = new int[40,100]; 

for (int i = 0; i < 41; i++) { 
    for (int j = 0; j < 100; j++) { 
     if (positions[i,j] = 1) { 
      GameObject temp = Instantiate(block, new Vector3(j * blockWidth, i * blockHeight, 0), Quaternion.identity) as GameObject; 
     } 
    } 
} 

それはこの大きな配列の座標のすべてを設定するのに長い時間がかかるだろうが、それが小さい場合、あなただけのパラメータ、またはとをループはそれを苦労して行うことができます。さもなければ、私はスクリプトなしでそれをやろうとします。

+0

それはまさに私がやりたいことです、ありがとう。しかし、どうすれば配列を0と1に正確に割り当てることができますか?私の質問がばかげていると、すみません。 –

+0

@ nico.userグリッドを作成する方法の1つは、グリッド内のスペースをクリックするとそこにブロックを追加することです。次に、実行時間の後にグリッドを保存します。これは簡単ではありませんが、手動ですべての1と0を入れるよりも簡単です。私はもっ​​と良い方法は考えられない – Ultimat0