private void CreatePuzzleTiles() { // 배열 생성 TileDisplayArray = new GameObject[Width, Height]; // 크기와 위치 설정 Scale = new Vector3(1.0f / Width, 1.0f, 1.0f / Height); Tile.transform.localScale = Scale; // 타일에 번호값 설정 int TileValue = 0; // 타일 생성 for (int j = Height - 1; j >= 0; j--) { for (int i = 0; i < Width; i++) { // 위치 설정 Position = new Vector3(((Scale.x * (i + 0.5f)) - (Scale.x * (Width / 2.0f))) * (10.0f + SeperationBetweenTiles), 0.0f, ((Scale.z * (j + 0.5f)) - (Scale.z * (Height / 2.0f))) * (10.0f + SeperationBetweenTiles)); // 위치 설정 DisplayPositions.Add(Position); // 타일 생성 TileDisplayArray[i, j] = Instantiate(Tile, PuzzlePosition, Quaternion.Euler(90.0f, -180.0f, 0.0f)) as GameObject; TileDisplayArray[i, j].gameObject.transform.parent = this.transform; // 카운드 세팅과 증가 ST_PuzzleTile_phara thisTile = TileDisplayArray[i, j].GetComponent <ST_PuzzleTile_phara>(); thisTile.ArrayLocation = new Vector2(i, j); thisTile.GridLocation = new Vector2(i, j); thisTile.LaunchPositionCoroutine(Position); TileValue++; // Material 생성 Material thisTileMaterial = new Material(PuzzleShader); // 퍼즐 이미지 저장 thisTileMaterial.mainTexture = PuzzleImage; // material값 저장 thisTileMaterial.mainTextureOffset = new Vector2(1.0f / Width * i, 1.0f / Height * j); thisTileMaterial.mainTextureScale = new Vector2(1.0f / Width, 1.0f / Height); // 해당 타일을 위한 새로운 material 생성 TileDisplayArray[i, j].GetComponent <Renderer>().material = thisTileMaterial; } } }
private void CompletePuzzleTiles() { // 크기 저장 Scale = new Vector3(1.0f / Width, 1.0f, 1.0f / Height); Tile.transform.localScale = Scale; // 위치 설정 Position = new Vector3(((Scale.x * 0.5f) - (Scale.x * (Width / 2.0f))) * (10.0f + SeperationBetweenTiles), 0.0f, ((Scale.z * 0.5f) - (Scale.z * (Height / 2.0f))) * (10.0f + SeperationBetweenTiles)); // 위치 설정 DisplayPositions.Add(Position); // 타일 생성 LastDisplayTile = Instantiate(Tile, gameObject.transform.position, Quaternion.Euler(90.0f, -180.0f, 0.0f)) as GameObject; LastDisplayTile.gameObject.transform.parent = this.transform; // 타일 세팅 ST_PuzzleTile_phara thisTile = LastDisplayTile.GetComponent <ST_PuzzleTile_phara>(); thisTile.ArrayLocation = new Vector2(0, 0); thisTile.GridLocation = new Vector2(0, 0); thisTile.LaunchPositionCoroutine(Position); // Material 생성 Material thisTileMaterial = new Material(PuzzleShader); // 퍼즐 이미지 저장 thisTileMaterial.mainTexture = PuzzleImage; // material값 저장 thisTileMaterial.mainTextureOffset = new Vector2(0, 0); thisTileMaterial.mainTextureScale = new Vector2(1.0f / Width, 1.0f / Height); // 해당 타일을 위한 새로운 material 생성 LastDisplayTile.GetComponent <Renderer>().material = thisTileMaterial; }
public Vector3 GetTargetLocation(ST_PuzzleTile_phara thisTile) { // 움직일 수 있는지 확인하고 목적지 정보 확인 ST_PuzzleTile_phara MoveTo = CheckIfWeCanMove((int)thisTile.GridLocation.x, (int)thisTile.GridLocation.y, thisTile); if (MoveTo != thisTile) { // 새로운 타일의 목적지 정보를 저장 Vector3 TargetPos = MoveTo.TargetPosition; Vector2 GridLocation = thisTile.GridLocation; thisTile.GridLocation = MoveTo.GridLocation; // 빈 타일의 위치로 옮김 MoveTo.LaunchPositionCoroutine(thisTile.TargetPosition); MoveTo.GridLocation = GridLocation; // 새로운 위치 정보 반환 return(TargetPos); } // 현재 위치 그대로 반환 return(thisTile.TargetPosition); }