public void InitializeFigure(int figureIndex, Transform[] partsTransform, FigureStruct figureStruct, float scale) { this.figureIndex = figureIndex; this.scale = scale; this.figureStruct = figureStruct; this.partsTransform = partsTransform; figureCellSize = (float)3 / DataStorage.FieldSize.x; figureTransform = GetComponent <Transform>(); startPosition = new Vector3( figureTransform.localPosition.x - (figureStruct.figureSize.x - 1) * miniFigureCellSize / 2, figureTransform.localPosition.y - (figureStruct.figureSize.y - 1) * miniFigureCellSize / 2, figureTransform.localPosition.z); figureTransform.localPosition = startPosition; boxCollider = GetComponent <BoxCollider2D>(); UpdateMiniFigureBoxCollider(); draggingOffset = new Vector3(figureCellSize * (-(figureStruct.figureSize.x - 1)) / 2, figureCellSize / 2 + 0.6f, 0); }
private void SpawnFigure(int figureIndex, FigureStruct figureStruct, float spawnDelay) { figures[figureIndex] = Instantiate(miniFigurePrefab, spawnPositions[figureIndex], Quaternion.identity).GetComponent <Figure>(); Transform[] partsTransform = new Transform[figureStruct.partsPositions.Length]; for (int i = 0; i < figureStruct.partsPositions.Length; i++) { partsTransform[i] = Instantiate(miniFigurePartPrefab).GetComponent <Transform>(); partsTransform[i].parent = figures[figureIndex].transform; partsTransform[i].localPosition = new Vector3(cellSize * figureStruct.partsPositions[i].x, cellSize * figureStruct.partsPositions[i].y, 0); } float destScale = 1; if (DataStorage.CountOfFigures > 3) { destScale = 0.9f; } figures[figureIndex].InitializeFigure(figureIndex, partsTransform, figureStruct, destScale); figures[figureIndex].transform.localScale = new Vector2(0, 0); StartCoroutine(ShowFigure(figureIndex, spawnDelay, destScale)); }