2017-03-28 7 views
1

私は統一のためにC#を学んでいて、いくつかのポインタを使用することができます。どのように制限するCreateCell C#手続きグリッド生成単体

私はcatlikecoding hex mapチュートリアルに従っていますが、私は独自の方法でグリッドを変更しました。

http://catlikecoding.com/unity/tutorials/hex-map-1/

私の目標は、手続き7 * 7グリッドからスタートの正方形のピラミッドを作成することです。私は、彼らが次の式

x + y > n - 1 where n = grid size (for example (6,1) or (5,6) 

に会うときの座標(x、y)が作成されていないと、細胞は、私が持っているように、私はCreateCellに制限を置くにはどうすればよい

機能をループプレハブ平面を使用しています地面の下の望ましくない面を持つ平面の菱形を作る限り、得られた。

スクリプトは次のとおりです。

パブリッククラスHexGrid:MonoBehaviour {

public int width = 7; 
public int height = 7; 
public int length = 1; 


public SquareCell cellPrefab; 
public Text cellLabelPrefab; 

SquareCell[] cells; 

Canvas gridCanvas; 

void Awake() { 
    gridCanvas = GetComponentInChildren<Canvas>(); 

    cells = new SquareCell[height * width * length]; 

    for (int z = 0 ; z < height; z++) { 
     for (int x = 0; x < width; x++) { 
      for (int y = 0; y < length; y++) 
       CreateCell(x, z, y); 
     } 
    } 
} 

void CreateCell(int x, int z, int y) { 
    Vector3 position; 
    position.x = x * 10f ; 
    position.y = ((y + 1) - (x + z)) * 10f + 60f; 
    position.z = z * 10f ; 

    Cell cell = Instantiate<Cell>(cellPrefab); 
    cell.transform.SetParent(transform, false); 
    cell.transform.localPosition = position; 

    Text label = Instantiate<Text>(cellLabelPrefab); 
    label.rectTransform.SetParent(gridCanvas.transform, false); 
    label.rectTransform.anchoredPosition = 
     new Vector2(position.x, position.z); 
    label.text = x.ToString() + "\n" + z.ToString(); 
} 
} 

グリッドは、これまで Image

答えて

0

迅速な解決には、セルを作成するコードの一部の前にifステートメントを追加することです。この場合、メソッドCreateCell()。 if文はあなたのロジックをコード内に持つべきです。また、サイズをチェックするために2つの変数を作成する必要があります。例:

public int tempX; 
public int tempY; 
void Awake() { 
gridCanvas = GetComponentInChildren<Canvas>(); 

cells = new SquareCell[height * width * length]; 

for (int z = 0 ; z < height; z++) { 
    for (int x = 0; x < width; x++) { 
     for (int y = 0; y < length; y++) 
      { 
       if (x + y < (tempX + tempY) - 1) 
       { 
        CreateCell(x, z, y); 
       } 
      } 
     } 
    } 
} 
+1

_public int tempY; _ _int 'TempY = height'_と_'if(x + y Freddo1083

関連する問題