개발일지/TIL

[Unity Devcamp] 0323 개발일지

JangKroed 2023. 3. 23. 07:13
728x90
반응형

[기획수정]

신기록 달성 시 나오는 폭죽효과 5초만 지속되도록 수정

  • 기존에 Particle 구현시 Looping에 체크되있어 반복되도록 설정되어있어 체크제거하여 반복되지 않게 수정
  • Start Lifetime을 5로 수정하여 구현완료.

 

도전모드의 여러번 터뜨려야 하는 블록이 파괴조건 달성시 애니메이션 효과 제거

  • 숫자가 없는 블록만 애니메이션 효과 적용하여야 한다.
  • 해당 칸의 value값이 1일 경우에 숫자가 없는데, 1일경우에만 애니메이션 효과 적용하니 앞선 코드순서에서 이미 1이었던 칸은 0이 되어 적용되지않아 0일경우 애니메이션 효과 적용되도록 수정.
// GameHUD.cs
    private Transform SetMatches(List<Vector2Int> matches, int i)
    {
        int x = matches[i].x;
        int y = matches[i].y;
        matrix[x, y] = matrix[x, y] > 0 ? matrix[x, y] - 1 : 0;
        SetCellSprite_Default(boardCells[x, y], x, y, matrix[x, y]);
        
        // 해당 좌표의 블록의 값이 0인경우에만 애니메이션 효과 적용
        if (matrix[x, y] == 0) GfxCreate_BlockCrear(boardCells[x, y].transform);

        if (comboTextPositionState)
        {
            ScoreTextPosition.x += boardCells[x, y].transform.position.x;
            ScoreTextPosition.y += boardCells[x, y].transform.position.y;
        }

        return boardCells[x, y].transform;
    }

 

현재점수가 최고점수 갱신 시 플레이 화면의 최고점수도 갱신되어야 한다.

  • 현재 로직은 현재점수가 최고점수(All Time)를 넘기게 되면 효과음이 나오고 정산시 Save되는 방식.
  • 현재 점수가 최고점수를 갱신시 마다 효과음이 나게되면 유저입장에서 효과음이 과다하다는 인식이 생길 수 있어 기존대로 정산시에만 Save하고 효과음의 기준은 Save된 최고점수를 갱신하는 시점으로 적용.
// GameHUD.cs
IEnumerator SetScoreUpdate(int input, float delay)
    {
        int start = int.Parse(scoreText.text, NumberStyles.AllowThousands);
        int best = int.Parse(BestScoreTxt.text, NumberStyles.AllowThousands);
        
        // 현재점수가 최고점수보다 높을 시 최고점수 갱신
        if (start > best) BestScoreTxt.text = string.Format("{0:#,###}", input);

        while (input > start)
        {
            start++;
            scoreText.text = string.Format("{0:#,###}", start);
            yield return YieldCache.WaitForSeconds(delay);
        }

        yield return null;
    }

 

 

728x90
반응형