[๋ด์ผ๋ฐฐ์์บ ํ] ์ ๋ํฐ ์๊ฐ ๊ฐ๋ / ๊ฐ์๋, ์์น๋ Vector3 ๊ทธ๋ผ ํ์ ์..??
๐ก Unity์์์ ์๊ฐ...?
์ค๋๋ถํฐ๋ ์ ๋ํฐ๋ฅผ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ ๋ฌธํ๋ ๊ณผ์ ์ ๋ฐ๊ธฐ ์์ํ๋ค.
๋ฐฐ์ฐ๋๋ฐ Awake, Start, Update.. .. ๋ฑ์ ๊ฐ๋ ๊ณผ Time.deltaTime ์ด๋ผ๋ ๊ฐ๋ ์ด ๋์๋๋ฐ
๊ฐ์๊ธฐ deltaTime์์ ์ ํ์ํ์ง ๊ฐ์ด ์ ์์ ์ฌ๋ฌ ๋ฒ ๋๋ ค๋ณด๊ณ ๊ฒ์ํ๋ฉฐ ์ดํดํด๋ดค๋ค.
๋ง์ ๊ฐ๋ ์ ์ก๊ณ ๋๋, **์ ์ด๊ฑธ ์ฐ๋์ง**๊ฐ ๋ถ๋ช ํด์ ธ์ ์ ๋ฆฌํด๋๋ คํ๋ค.
๐งฉ ๋ฌธ์
Time.deltaTime์ ์ ์ธ๊น? ํ๋ฉด์ ๋ญ.. ์๋ฅผ๋ค์ด 3, 2, 1์ด ํ๊ณ 3์ด์ ์๊ฐ์ ์ด๋ค๋ฉด,
๊ทธ๋ฅ -= 3 ํ๋๊ฑฐ๋ ๋ฌด์์ด ๋ค๋ฅธ์ง ๋ชจ๋ฅด๊ฒ ์ด์
์ดํด๊ฐ ๋์ง ์์๋ค.
์ด์ฐจํผ ํ๋ ์์ด ์ง๋๊ฐ๋ ๊ฑด ์ค์ ๋ก ์๊ฐ์ ํ๋ฅด๊ณ ์๋ ๊ฒ์ด๋๊น ๋ง์ด๋ค.
๋์ํ๋ ๊ฒ์ ๋ฌด์จ ์ฐจ์ธ์ง ๊ฐ์ด ์์๋ค.
๐ ..?
๐ฏ ์๋
deltaTime์ ์ฐ๊ณ ์์ฐ๊ณ ์ฐจ์ด๋ฅผ ๋น๊ตํด๋ณด๊ธฐ๋ ํ๋ฉฐ ์คํ๋ ํด๋ดค๋ค.
๋์ผ๋ก ๋ณผ ๋ ์ฐจ์ด๊ฐ ์์๋ค. ;;;
๊ฐ์๋ฅผ 0.75๋ฐฐ์์ผ๋ก ์ฌ๋ฌ๋ฒ ๋ฐ๋ณตํด์ ๋ณด๊ณ , ๊ด๋ จ ๋์ด ๊ฒ์์ ํด๋ดค๋ค.
โ ํด๊ฒฐ
์ ๋ํฐ = ํ๋ ์ ๋จ์๋ก ์๋์ ํ๋ค.
๊ทธ๋์ -= 3f; ๊ฐ์ ์ฝ๋๋ฅผ ์ด๋ค๋ฉด,
ํ๋ ์๋ง๋ค 3์ฉ ์ค์ด๋ ๋ค. ๊ทธ 3์ ์ด๋จ์๊ฐ ์๋๊ธฐ์ ์ง์ง ๋ช์ด๊ฑธ๋ฆด์ง๋ ํ๋ ์์ ๋ฐ๋ผ ๋ค๋ฅดใท
์ฑ๋ฅ์ด ์ข์ ์ปดํจํฐ, 60fps ์์ ์๊ฐ์ ์ฌ๋ฉด ์์ฒญ ๋นจ๋ฆฌ ๋๋๊ณ ,
์ฑ๋ฅ ๋ฎ์ ์ปดํจํฐ, 30fps์์๋ ๊ทธ์ ๋นํด ๋๋ฆฌ๊ฒ ๋๋๋ค.
์ฌ๋ฌ ์ ์ ๊ฐ ๋์ ์ ์ํด์ ์ํธ์์ฉํ๊ฑฐ๋ ๋๊ฒฐํ๋ ๋ฑ์
์จ๋ผ์ธ ๋ฉํฐํ๋ ์ด์ด๋ MMORPG, ์ค์๊ฐ ์ ํฌ ๊ฒ์๊ฐ์ FPS/TPS/์ก์ ๊ฒ์
ํน์ ์ ์ ๋ ์ ์ ! PvP ๊ธฐ๋ฐ ๊ฒ์์์ deltaTime์ด ์๋ค๋ฉด...
ํ๋ ์์ ์์กดํ๋ ๊ฒ์์ด๋ผ๋ฉด ์ ๋ง ๋ถ๊ณต์ ํ ๊ฒ์์ด ๋์ด๋ฒ๋ฆด ์ ์๋ค.
: ์ ์
๐ ํต์ฌ
Time.deltaTime = ํ๋ ์์ ์๊ด ์์ด ์ผ์ ํ ์๊ฐ์ผ๋ก ๋์ํ๊ธฐ ์ํด์ ํ์ํ๋ค.
= ์คํฌ๋ฆฝํธ์ ์ ๋ฐ์ดํธ์์๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
= ๊ฒ์์ ๋ฌผ๋ฆฌ์ ์ผ๋ก ํ๋ ์ ๋จ์๋ก๋ง ๋์ํจ. ๊ทธ๋์ ๋ฌผ๋ฆฌ์ ์ธ ์๊ฐ์ด ํ์ํจ.
= ์๊ฐ ๊ทธ ์ก์ฑ. ์ฐ๋ฆฌ๊ฐ ์๊ณ๊ฐ ์์ด๋ ์ค์ ๋ก ์๊ฐ์ ํ๋ฅด๊ณ ์์ง ์๋๊ฐ...
์ด ๊ฒ์์๋ ํ๋ ์๊ณผ ๋ฌด๊ดํ '์๊ฐ'์ด๋ผ๋ ์กด์ฌ๋ฅผ ๋ง๋ค์ด ์ค ์ ์๋ ๊ฒ์ด๋ค.
๐ก ํ์ ์ Vector3 ๊ฐ ์๋ Quaternion?!
์ค๋ธ์ ํธ๋ฅผ ํ์ ์ํค๋๋ฐ transform.rotation = Vector3 ์ด๋ ๊ฒ ๋ XXXX
ํ์ ์ Quaternion ์ด๋ผ๋ ๊ฐ๋ ์ ์กฐ๊ธ ์ด๋ ต๋ค./
๐งฉ ๋ฌธ์
์์น๋
Vector3 position = transform.position;
๊ฐ์๋๋
Vector3 velocity ~ ๋ผ๊ณ ์ฐ๋๋ฐ
ํ์ ๋ง ์ ๋ค๋ฅธ๊ฑธ ์ธ๊น?
๊ทธ๋ฆฌ๊ณ Quaternion.Euler(0, 90, 90); = y์ถ์ผ๋ก 90๋, z์ถ์ผ๋ก๋ 90๋ ํ์ ํ ํ์ ๊ฐ
์ผ๊น?
๊ถ๊ธ...
๐ฏ ์๋
๊ทธ๋ฅ ๊ฐ์ ธ์ค๋ ๊ฒ๋ง์ผ๋ก๋ง ์จ๋ด๋ ์๋ค. ์ค๋ฅ๊ฐ๋๋ค.
Vector3๋ struct ๋ผ๊ณ ์จ์๋๊ฒ์ ๋ณผ ์ ์๊ณ
์ค๋ฅ ์ค๋ช ์๋ ์ ๋ํฐ ์์ง Quaternion ํ์์ ๋ฒกํฐ3๋ก ๋ณํํ ์ ์๋ค๊ณ ํ๋ค.
Quaternion.Euler(0, 90, 30) ์ด๋ฐ์์ผ๋ก ๋ค์ํ๊ฒ ์ซ์๋ฅผ ๋ฃ์ด ์๋ํด๋ณด๋ฉฐ ์ฌ์ ํ์ธ ํด๋ณด์๋ค.
2D์์๋ x์ถ๊ณผ y์ถ ๊ธฐ์ค์ด ํด ์ค ์์๋๋ฐ ํ์ ์ ๋ ๋ฌ๋๋ฐ.
x์ถ์ ๋ช์ ๋ฃ์ด๋ ๋ณํ์ง ์์๋ค.
โ ํด๊ฒฐ
์ค๋ฅ๋ฅผ ํด์ํด ๋ณด์๋ฉด,
Quaternion๊ณผ Vector3 ๋ ์ฌ์ค ๋๋ค ๊ตฌ์กฐ์ฒด์ธ๋ฐ ์ ์๋๋๋..
C# ์ ๊ตฌ์กฐ์ฒด์ ๊ตฌ์กฐ์ฒด๋ผ๋ฆฌ ๋ช ์์ ๋ณํ์ด ์๋๋ค๊ณ ํ๋ค.
๊ทธ๋ฅ ๋ฒกํฐ ์ ์ผ๋ฉด ์์์ ํ์ ์ผ๋ก ์์๋ฃ์ง ์ข...
๊ทธ๋ ๊ฒ ์๊ฒจ๋ฃ์ง ๋ชปํ๊ณ ์๋์ผ๋ก ์๋ฐ๊ฟ ์ค๋จ์๋ฆฌ๋ค.
transform์ ์ปดํฌ๋ํธ๋ฅผ ๊ฐ๊ณ ์๋๋ฐ ์ปดํฌ๋ํธ์๋ ์ค๋ธ์ ํธ์ ์์ง, ํ์ , ํฌ๊ธฐ ์ ๋ณด๊ฐ ์๋ค.
์์น๋ ํฌ๊ธฐ๋ x, y, z ์ถ์ ์ขํ๊ฐ๋ง ์ ๋ ฅํ๋ฉด ์ด๋์ ์ผ๋งํ ํฌ๊ธฐ์ธ์ง ์ฝ๊ฒ ์ ์ฉ์ด ๊ฐ๋ฅํ์ง๋ง.
C#์ธ์ด์์์ ํ์ ์ ์ฐ์ฐ์ผ๋ก ์ฒ๋ฆฌํ๋ ํธ์ด๋ผ๊ณ ํ๋ค.
์ฌ๋ ๋ง๋ก๋ ์ถ์ผ๋ก ํ๋ฌ์ค ๋ง์ด๋์ค๋ฅผ ํ์ฉํด ๋ช๋๋ผ๊ณ ํํํ ์ ์์ง๋ง,
์๊ฐํด๋ณด๋ ์ฌ์ค ์ด๊ฑฐ๋ก ์ด๋๋ก ์ผ๋งํผ ํ์ ๋๊ฑด์ง ์์์ด ์ ์๊ฐ๊ธฐ๋ํ๋ค.
(ํ์ถ๋ง ์ฐ๋ฉด ์์์ด ๊ฐ์ง๋ง.. ์ ๋ค ๋ฐ๋๋ฉด ์ด์ตํ.)
์๋ฌดํผ ๊ทธ๋์ ์ฌ๊ธฐ์ ์ธ ๋๋, x, y, z ๋ฐฉํฅ๊ฐ๋ง์ผ๋ก๋ ํํ์ ํ ์ ์๋ค.
๊ทผ๋ฐ ์ด์ฐจํผ Quaternion์ด ๊ตฌ์กฐ์ฒด์๋๋1? ๊ทธ ๊ตฌ์กฐ์ฒด ์์ ํฌํจ๋ static ๋ฉ์๋๊ฐ ์๋ค.
๊ทธ ๋ค์ .Euler(x, y, z) ๋ฅผ ์ ์ด์ฃผ๋ ๊ฒ. ์ด๊ฒ์ด static ๋ฉ์๋์ด๋ค.
Euler : ๊ฐ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋กํ๋ ํ์ ์ ์ ์ํ๋ ํจ์.
(๋ฐ์์ ์๊ทธ๋ ๊ฒ ์๊ฒจ์ ๋๋๊ฒ๋ ์ค์ผ๋ฌ๋ค. ๊ทธ๋ ๋ค ๊ทธ ์ํ์ ์ค์ผ๋ฌ๋ค ใ ใ )
Quaternion.Euler(0, 90, 90); = ๋จผ์ z์ถ์ผ๋ก 90๋, ๊ทธ ๋ค์ y์ถ์ผ๋ก 90๋ ํ์ ํ ํ์ ๊ฐ!
์ค์ผ๋ฌ ๊ฐ๋๋ ๋ค์์ ๋ถํฐ ์์๋๋ก ์ ์ฉ์ด ๋๋ค๊ณ ํ๋ค.
๊ทธ๋์ ์์ ๋๋ฌธ์ ์๊ฐ๊ณผ ์์ ๋ค๋ฅด๊ฒ ํ์ ํ ๋ชจ์ต์ผ ์ ์์ผ๋, ๊ผญ ์ฌ์ ๋ด์ผ๊ฒ๋ค
๐ ํต์ฌ
Vector3 = ์์น, ๋ฐฉํฅ, ๊ฐ์๋ ๋ฑ x, y, z๋ ๋ฒกํฐ ์ฑ๋ถ ์ถ๊ด๋ จ
ํ์ = Quaternion.Euler ์ฌ์ค x, y, z, w ๋ก
w๋ ์ค์นผ๋ผ ์ฑ๋ถ์ด๋ผ๋๋ฐ, ์ด๊ฒ w ๊ฐ์ ์ง๊ด์ ์ด์ง ์์์ ๋ฒ๊ฑฐ๋กญ๋ค๊ณ ํ๋ค. ์ด์ฐจํผ ๋ง์ด ์์ฐ๋ ๋ฏํ๋ค.
์ด์ฐจํผ ๋ฒกํฐ ์ฑ๋ถ๋ง์ผ๋ก๋ ํจ์ ๋ด์์๋ w๋ฅผ ์๋์ผ๋ก ๊ณ์ฐํด์ค๋ค๊ตฌํ๋ค. ์ด๊ฑธ ์ดํดํ๋ ค๋ฉด ํ์์ ํจ๊ผ ๋ณต์์๋ฅผ ์ดํดํด์ผํ๋ ๊ฒ ๊ฐ๋ค. ใ ใ ๊ทธ๋ฅ ๊ทธ๋ฐ๊ฐ ๋ณด๋ค.. ํฅ๋ฏธ๋ก์๋ณด์ด๋ ์๊ฐ๊ด๊ณ์ ๋์ ๋จ๊ณ๋ ๊ทธ๊ฒ ์ค์ํ ๊ฒก ์๋๋ ์ฌ๊ธฐ๊น์ง๋ง ์์๋ณด๊ฒ ๋ค..