0. 들어가며
오늘은 노트를 맞게 눌렀을 때 점수 증가와, Combo를 계산하여 Combo당 곱해지는 점수도 계산해보려고 한다.
1. Canvas에서 ScoreText와 MultiplierText를 표시할 UI 생성
왼쪽 아래에 텍스트를 넣어주었다.
2. 점수 계산을 해 줄 GamaManager.cs 작성
점수 계산, 콤보 계산, UI에 띄워주기 위한 변수를 선언한다.
public int currentScore; // 점수 합계
public int scorePerNote = 100; // 노트 점수
public int currentMultiplier;
public int multiplierTracker;
public int[] multipleierThresholds;
public Text scoreText; // UI에 띄워줄 텍스트를 위함
public Text multiText;
Start()에서 게임 시작 전 기본 Score : 0 임을 text UI에 지정해주고,
콤보의 기본 값을 1로 설정해준다. 0이 아닌 이유는 곱해져야 하는 값이기 때문이다.
void Start()
{
instance = this;
scoreText.text = "Score: 0"; // 처음 시작 시 점수는 0
currentMultiplier = 1; // 기본 값, 곱해야 하기 때문에 1
}
- 점수 배수 관리: 기본적으로 플레이어가 노트를 맞추면 scorePerNote에 의해 점수가 올라가지만, currentMultiplier는 이 점수를 곱하는 배수입니다. 배수가 높을수록 한 번의 노트로 더 많은 점수를 얻을 수 있습니다.
-
점수식 : currentScore += scorePerNote * currentMultiplier;
- 콤보에 따른 배수 증가: 플레이어가 여러 노트를 연속으로 맞추면 multiplierTracker가 증가하고, 특정 조건(multipleierThresholds)이 충족되면 currentMultiplier가 증가합니다. 이렇게 배수가 올라가면서 점수도 빠르게 올라갑니다.
- 노트를 놓쳤을 때 리셋: 플레이어가 노트를 놓치면 콤보와 함께 currentMultiplier가 다시 1로 초기화됩니다. 이로 인해 점수가 다시 기본 배수로 돌아가며, 더 많은 노트를 맞춰야 다시 배수가 올라갑니다.
public void NoteHit()
{
Debug.Log("Hit On Time");
// 배수가 배열의 길이를 초과하지 않는지 확인
if (currentMultiplier - 1 < multipleierThresholds.Length)
{
multiplierTracker++; // 조건 충족했으니 증가
// 현재 배수를 증가시키기 위해 조건을 만족하는지 체크
if (multipleierThresholds[currentMultiplier - 1] <= multiplierTracker)
{
multiplierTracker = 0; // 초기화
currentMultiplier++; // 증가
}
}
// 콤보 텍스트 UI에 표시
multiText.text = "Multiplier: x" + currentMultiplier;
currentScore += scorePerNote * currentMultiplier; // 점수 = 기본 값 * 콤보 값
scoreText.text = "Score: " + currentScore; // 점수 텍스트 UI에 표시
}
public void NoteMissed()
{
Debug.Log("Missed Note");
// 놓쳤을 경우 콤보는 다시 0
currentMultiplier = 1;
multiplierTracker = 0;
multiText.text = "Multiplier: x" + currentMultiplier;
}
3. 결과
Score, Muiltiplier가 계산과 조건에 따라 표시가 되는 것을 확인할 수 있다.
'개발일지 > Unity 6 [미제]' 카테고리의 다른 글
[Unity 6 - 프로젝트] 리듬 게임 4) Timing Hits에 따른 Score와 Effect (2) | 2024.10.27 |
---|---|
[Unity 6 - 프로젝트] 리듬 게임 2) 음악 재생 & Miss 노트 (0) | 2024.10.25 |
[Unity 6 - 프로젝트] 리듬 게임 1) Note Hit (0) | 2024.10.23 |
[Unity 6 - 프로젝트] 3D 캐릭터 이동 및 애니메이션 구현 (1) | 2024.10.23 |
[Unity6] 를 활용한 프로젝트 시작 (0) | 2024.10.23 |