示例#1
0
    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;
            }
        }
    }
示例#2
0
    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;
    }
示例#3
0
    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);
    }