์์ง ๋ฌธ๋ฒ์ ๋ง๊ฒ ์ข๋ง ๊ณ ์ณ์ ์ฐ์ผ
func lerp(from , to , speed , tolerance):
if from != to:
if abs(from - to) * speed > tolerance:
var t_gap = abs(from - to) * speed
if from < to:
from += t_gap
else:
from -= t_gap
else:
from = to
return from
# ํ๋ ๊ฒ:
# from์ด ๋ถ๋๋ฝ๊ฒ ๊ฐ์ด ๋ณํจ to๊น์ง (tolerance๋ ์ ๊ฐ๋ณด๋ค from์ด ์์ ๊ฒฝ์ฐ from์ to๋ก ๊ฐ์ ๊ณ ์ ํจ. tolerance๊ฐ ์์์๋ก ์์ง์์ด ๋ถ๋๋ฌ์)
lerp ์ง์ ์ ํ๋ ๊ฒ์ค ๊ฐ์ ๊ฑฐ ์ฐ๋ ค๋ฉด ์ด๊ฑฐ ๋น์ทํ๊ฒ ๋ง๋ค์ด ์ฐ๋ฉด ๋จ
๊ฒ์์ ์ฐ๊ธฐ์ ๋ก์ง์ด ๋๋ฌด ๋ฌด๊ฑฐ์๋ณด์
...?
?
์ด๋ถ 32๋นํธ ํฉ๋งจ ๋ง๋์๋๋ด
ใ ?
if๋ฌธ ํ๊ฐ๋ง ์ฐ๊ณ ์ํ๊ฒฐํฉ์ผ๋ก ๊ตฌํํ๋ฉด 2์ค์์ ๋ง๋ค์ด์ง๋๋ฐ ๊ตณ์ด ํฉ๋งจ์ ์ธ๊ธํ ์ด์ ๊ฐ? lerb๋ฉด ๊ฑฐ์ ํ๋ ์๋น ์ฌ์ฉ์ด ๋น๋ฒํ๊ฒ ์ด๋ค์งํ ๋ฐ ์ ๋ฐ์์ผ๋ก if๋ฌธ ๋ก์น ํ๊ณ abs ๊น์ง ๊ฐ๋ค์ฐ๋ฉด์ ์์กด์ฑ๊น์ง ์๋ ์ฝ๋๋ฉด ์ค๋ฒํค๋๊ฐ ์ปค๋ณด์ด๋ ๊ฑด ์ด์ฉ ์ ์์ง
์ด ํจ์๋ ์ด๋จ ๋ ์ฐ๋ ๊ฑฐ์? ์ฒ์ ๋ด
์ ์ด๊ฒ ์ ํ๋ณด๊ฐ๋ฒ์ด๊ตฌ๋
๋ฌผ์ฒด๋ฅผ ์์ง์ผ ๋ a.position.x += 5 ์ด๋ฐ ์์ผ๋ก ์์ฑํ๋ฉด ์ผ์ ์๋๋ก ์์ง์ด๋๊น ๋ถ๋๋ฌ์ ๋ณด์ด์ง๋ ์๊ณ ๋ชฉํ ์ง์ ์์ ๊ฐ์๊ธฐ ํ ์๋ฒ๋ฆฌ๋๊น ์์ง์์ด ๋ฑ๋ฑํด ๋ณด์ด์์, ์ด๊ฑธ ๋ถ๋๋ฝ๊ฒ ์์ง์ด๊ธฐ ์ํด์ lerpํจ์๋ฅผ ์ฐ๋๋ฐ, ๊ทธ ์๊ณ ๋ฆฌ์ฆ์ ํจ์ํํ ๊ฑฐ์. ์๋ฅผ ๋ค์ด ๋ณธ๋ฌธ์ ํจ์๋ก a.position.x = lerp(a.position.x, 640, 0.1,0.001) ์ด๋ ๊ฒ ์ฐ๋ฉด a์ x์ขํ๋ ์ฒซ ํ๋ ์์ 64, ๋ค์์ 57.6, ๋ค์์ 51.8 ๊ทธ ๋ค์ 46.7 ๋งํผ ์ด๋ํ๋ฉด์ ๋ถ๋๋ฝ๊ฒ 640์ ๋๋ฌํ ๊ฑฐ์
์ด ์ด๊ฑฐ ๊ทผ๋ฐ ๊ณ ๋์ ๋ด์ฅ๋์ด ์๋ ํจ์๋ค