๊ฒ์ ์ ํ์๊ฐ์ 60์ด๋ก ์ ํด๋๊ณ ๊ฒฐ์น์ ์ ๋๋ฌํ๋ฉด
์ ์๋ฅผ ํ๋ฉด์ ๋ฐ์ด์ฃผ๊ณ ์ถ์ต๋๋ค.
๋นจ๋ฆฌ ๋์ฐฉํ ์๋ก ์ ์๋ฅผ ๋๊ฒ ์ฃผ๊ณ ์ถ์๋ฐ ์ฝ๋๋ฅผ
์ด๋ป๊ฒ ์ง์ค์ผ ํ ์ง ใ ๋ชจ๋ฅด๊ฒ ์ด์.
์ฌ๊ธฐ์ ๋ณ์ x๋ ๊ฒฐ์น์ ์ ๋๋ฌํ์ ๋ ์๊ฐ์ ๋๋ค.
ย ย
(60์ด(์ ์ฒด์๊ฐ)-์๋น๋์๊ฐ) * 1์ด๋น ์ ์..? ์ค์ด๋ฉด ๋จ์์๊ฐ * ๊ธฐ๋ณธ์ ์..?
์ด๋ฌ์ง ๋ง๊ณ ์. ๋ญ ๊ธฐํ์ ๋ฌธ์ ๊ธดํ๋์ ์ ๋ผ๋ฉด ์ ํ์๊ฐ 60์ด๋ฅผ ๋จผ์ ํ๋ฉด์ ํ์ํ๋ฉด์ ์งํ์ ๋ฐ๋ผ ์๊ฐ์ ์ค์ด๋ ํ์ด๋จธ๋ฅผ ๋ฌ์์. ๊ทธ๋ฌ๋ฉด ๋๋ ๋ ๋จ์์๊ฐ์ด ์์ฃ . 20์ด ๋จ๊ธฐ๊ณ ๊นจ๋๊ฑฐ์ฃ . ๊ทธ๋ฐ๋ค์์ ๋จผ์ ์ค์ฝ์ด๋ฅผ ์ฝ๋์์ผ๋ก ๊ณ์ฐํด์. ์์ ์นด์ดํธํ ์๊ฐ ๊ทธ๋๋ก ๊ฐ์ ธ์ค๋ฉด๋์ฃ . 60-40(๊ฑธ๋ฆฐ์๊ฐ) = 20 ํด๋ ๋๊ณ ์. ์ด์ ํ๋ฉด์ ํ์๋ ๋จ์์๊ฐ 20์ด๋ฅผ ์ ์ ์ค์ด๋ ์นด์ดํ ์ ๋๋ฉ์ด์ ์ ์คํํ๊ณ , ์ ์๋ ๋ฐ๋๋ก ์ฌ๋ฆฌ๋ ์นด์ดํ ์ ํ์ธ์. ๊ทธ๋ฌ๋ฉด ์ง๊ด์ ์ผ๋ก ๋จ์์๊ฐ์ ๋ฐ๋ผ ์ ์๋ฅผ ๋ ๋จน๋๊ตฌ๋ ํ๋ UX๊ฐ๋์. ์ด๊ฑด ๊ณ ์ ๊ฒ์์์๋ ๋ง์ด ์ด๋์ ์๊ฑฐ์์. ๊ฑฐ๊ธฐ์ ์ข๋ ์ง๊ด์ ์ธ ํ์ํ๊ณ ์ถ์ผ๋ฉด ์ฝ์ธ์ ๋จ์์๊ฐ->์ค์ฝ์ด ํ ์คํธ์ชฝ์ผ๋ก ์ชผ๋ฅด๋ฅด๋ฅด๋ฆ ๋ณด๋ด๋ ์ ๋๋ฉ์ด์ ํ๋ฉด๋์.
์ด๊ฒ ์ด๋ฅผ ์ค์ด๋ ์นด์ดํ ํ๋ํ๋๊ฐ ์ค์ฝ์ด๊ฐ ์ ํํ ๋ง์ํ์๋ ์๊ณ ์ ํ ์๊ด์์ด๋ ๋์ ์ด์ฐจํผ ์์๊ฐ์ด๋ผ ๊ทธ๊ฑฐ ์ผ์ผํ ๊ณ์ฐ์ํด๋๋์. 20์ด-> 0์ด๋ก ๋ณํ๋ ์๊ฐ 1์ด, ์ค์ฝ์ด 0 -> 1000์ด๋ 2000์ด๋ ์ด์ฐจํผ 1์ด๊ฑธ๋ฆฌ๊ฒ ์ฝ๋ฉํ๊ฒ์ฃ
๊ฒฐ๋ก ์ ์ผ๋ก ๋จ์์๊ฐ๋๋น ์ค์ฝ์ด๋ ์ด๋ฏธ ๊ณ์ฐ๋์ด์๊ณ ๋ฌธ์ ๋ ํ ์คํธ๊ฐ ์นด์ดํ ๋๋ UI ์ ๋๋ฉ์ด์ ์ด ๋ฌธ์ ์ธ๊ฑฐ์์. ๊ทธ๋ฐ๊ฑด ์ฝ๋ฃจํด์ผ๋ก ํํ๋ ์๋ง๋ค ์ฌ๋ฆฌ๋ฉด๋์. IEnumerator CountUpScore(float duration, int targetNumber) { int score = 0; while (score == targetNumber) { } }
while ๋ฌธ์์๋ targetNumber๋ฅผ ์นด์ดํธ์ฌ๋ฆด ์ด๋ฅผ ํ๋ ์์๋ก ๋๋๋งํผ์ฉ ํ๋ ์๋ง๋ค score๋ฅผ ์ฌ๋ ค์ฃผ๊ณ scoreText.text = score.ToString() ํด์ ๋ ์ด๋ธ์ ํ์ํ๊ฒํ๋ฉด๋๊ฒ ์ฃ .
IEnumerator CountUpScore(float duration, int targetNumber){ int score = 0; float startTime = Time.time; float elapsedTime = 0f; while (score ๊ฐ targetNumber๋ณด๋ค ์์๋์) { float deltaTime = Time.time - startTime - elapsedTime; int deltaScore = Mathf.FloorToInt(deltaTime * targetNumber / duration); score += deltaScore;
elapsedTime += deltaTime; scoreText.text = score.Tostring(); yield return null; } // score๊ฐ targetNumber ์ด์์ด ๋๋ฉด ์ข ๋ฃ } ๊ทธ๋ฆฌ๊ณ startCoroutine์ผ๋ก ํธ์ถ
๊ฐ์๊ธฐ ๋จธ๋ฆฌ๊ฐ ์ํ์
๋ค์ ๊ธ ์์ ํด์ ์ด๋ ๊ฒ ์ง์คฌ์ต๋๋ค. ์ฝ๋ฃจํด๊น์ง ์จ์ ํ๋ฉด ์ ๋ง์ด ๊ฐ๊ฑฐ๊ฐ์์..