前提・実現したいこと
Tilemap上にいるキャラクター群の状態を、二次元配列などで管理したい。
(キャラクターは、タイルマップ上を1マスずつ4方向にしか動けないようにしている)
発生している問題・エラーメッセージ
まず、tilemap.sizeで二次元配列を生成する。
これに、マップ上のキャラクターすべての状態を代入しようとした。
キャラクターのpositionをcellSizeなどを利用して、セル座標(?)として算出する。
これは負の値が出てくる事があるので、そのままでは配列のインデックスに使えない。
しかし、マップの形状もXY軸対称とも限らないので、セル座標→二次元配列のインデックス[x,y]に換算できない。
以下、編集中のスクリプトの問題箇所
c#
1 // class member 2 private static bool[,] distributionMap; 3 // instance only 4 private PlayerSquareMove squareMove = null; 5 6 // Start is called before the first frame update 7 void Start() 8 { 9 // static once-process 10 if (distributionMap == null) 11 { 12 distributionMap = new bool[ 13 PlayerSquareMove.GetCollisionTilemap().size.x, 14 PlayerSquareMove.GetCollisionTilemap().size.y]; 15 16 for (int i = 0; i < distributionMap.GetLength(0); i++) 17 for (int j = 0; j < distributionMap.GetLength(1); j++) 18 distributionMap[i, j] = false; 19 } 20 21 // instance only 22 squareMove = GetComponent<PlayerSquareMove>(); 23 var cellPos = squareMove.GetCellPosition(); // Vector3Int型 24 if (distributionMap[cellPos.x, cellPos.y]) // ★値によっては、ここでエラー。 25 { 26 Debug.LogError("duplicated"); 27 Destroy(gameObject); 28 } 29 }
補足情報(FW/ツールのバージョンなど)
Unity 2018.4.11
よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/25 01:47