2D ๊ฒ์ ๋ง๋ค๊ณ ์๋๋ฐ (๋ง์ฐ์ค์์นย - ํ๋ ์ด์ด ์์น)๋ฅผ ์ ๊ทํํด์ ์คํผ๋๋ฅผ ๊ณฑํ๋ ์์ผ๋ก ์ฝ๋๋ฅผ ์ง๋์ ์ํ์ธ๋ฐ
์ด๊ฒ ๋ง์ฐ์ค ํฌ์ง์ ์ด ํ๋ ์ด์ด์์ ๋ฉ์ด์ง๋ฉด ์ ๊ทํ๋ฅผ ํ๋๋ผ๋ ๋จ์ ๋ฒกํฐ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ค ๋ณด๋ ๋ง์ฐ์ค๊ฐ ํ๋ ์ด์ด์ ๋ฉ๋ฆฌ ๋จ์ด์ ธ ์์์๋ก ๋ฉ๋ฆฌ ๋ ์๊ฐ๋ ๋ฌธ์ ๊ฐ ์์ด์ ์ด๊ฑฐ๋ฅผ ๋์ผํ ๊ฑฐ๋ฆฌ๋ก ์๊ณ ์ถ์๋ฐ ์ด์ผํ๋ฉด ์ข์๊น ?
์์ฌ ์ฝ๋๋ก ์ฝ๋ ์ง ๊ฑฐ ๋์ถฉ ์ ์ด๋ณด๋ฉด
Dir = (Camera.main.ScreenToWolrdPoint(๋ง์ฐ์ค์์น) - ํ๋ ์ด์ด ์์น).normalized
private void Update()
{
_rigid.Position += Dir * ์คํผ๋ * Time.deltaTime
}
ํ์ฌ ์ด๋ฐ์์ผ๋ก ๋์ด ์๋๋ฐ ์ข์ ๋ฐฉ๋ฒ์ด ์์๊น ?
ํฌ๋ฌผ์ ์ผ๋ก ๋ ๋ฆด๊ฑฐ ์๋๋ฉด ๋ฐ์ฌ์ง์ ๊ณผ ํฌ์ฌ์ฒด์ง์ ์ฌ์ด ๊ฑฐ๋ฆฌ๋ก ๊ณ์ฐํ๋ฉด ๋์ง ์๋
๋จ์ ๋ฒกํฐ ํฌ๊ธฐ๊ฐ ์ปค์ง๋ค๋๊ฒ ๋ฌด์จ์๋ฆฌ์ ๋จ์ ๋ฒกํฐ ํฌ๊ธฐ๋ 1๋ก ๊ณ ์ ์๋?
๋๋ ์ด์๊ฐํ๊ณ ์ง ์ฝ๋์ธ๋ฐ ๋ค๋ฅด๊ฒ ์๋ํ๋๋ผ. ์ข ๋ ์์๋ณด๊ณ ๋ต๊ธ ๋จ๊ฒจ๋๋ฆผ ใฑใท
๋ง์ฐ์ค ์์น์ ๋ค๋ฅธ z๊ฐ์ด ๋ค์ด๊ฐ ์๋๊ฑฐ ์๋? ๊ทธ๋ ๋ค๋ฉด ๋ฉ๋ฆฌ์๋๊ฒ (x, y๋ฐฉํฅ์ผ๋ก ๋ฉ๋ฆฌ์์ผ๋) ๋ ๋ฉ๋ฆฌ๊ฐ๋ ๊ฒ ์ฒ๋ผ ๋ณด์ด๊ณ ๊ฐ๊น์ด ์๋๊ฒ(z๊ฐ์ด x,y๊ฐ์ ๋นํ๋ฉด ์ปค์ก์ผ๋) ๋๋ฆฌ๊ฒ ๊ฐ๋ ๊ฒ ์ฒ๋ผ ๋ณด์ผํ ๋๊น
์ ์ด๊ฒ ๋ง๋๋ฏ ์นด๋ฉ๋ผํ๊ณ ํ๋ ์ด์ด์ z ๊ฐ์ด ์์ดํด์ ๊ทธ๋ฐ๋ฏ, ๊ทผ๋ฐ ๊ทธ๋ฌ๋ฉด ๋ด๊ฐ ์ฝ๋๋ฅผ
Dir = (_mousePosition - PlayerController.Player.transform.position); _rigid.position += Dir.normalized * (_speed/ Dir.magnitude) * Time.deltaTime; ์ด๋ฐ์์ผ๋ก ์์ ํ๋๋ฐ ์ด๊ฑฐ๋ z๊ฐ๊น์ง ๋น๋กํ ๊ฑฐ๋ฆฌ๋ฅผ ๋๋ ์ค์ ํด๊ฒฐ๋๊ฑด๊ฐ ?
ํฐ์ผ๋ก ๋ณด๋ค ๋ต๋ตํด์ ์ปดํจํฐ ํด. magnitude๊ฐ์๊ฑด ์์ด๋ฒ๋ฆฌ๊ณ ๋๋ค vector2๋ก ๋ฐ๊ฟ
๋งํ๋๋ก z๊ฐ 0์ผ๋ก ๊ณ ์ ํ๊ณ ์งํํ๋๊น ์ ์์ ์ผ๋ก ๋์ผํ ๊ฑฐ๋ฆฌ๋ก ๋ ๋ผ๊ฐ๋ค ใณใณ
ใ ใ ๊ณ ์ณค์ด ใณใณ ์ฌ์ํ๊ฑฐ์์ ์ค์ํ๋๊น ๋ถ๋๋ฝ๋ค //
์๋ ํ๋ก๊ทธ๋๋ฐ์ ์ฝ์ง์ ๋ฒ๋ณต์ด๊ฑฐ๋ ๋ญ ๋ถ๋๋ฌ์ํ๋ ๋น๋นํ๊ฒ ๊ฒ์ํ๊ณ ์ง๋ฌธํ์
Dir.magnitude๋ ๋ฌด์กฐ๊ฑด 1 ์๋? ๋ญ๊ฐ ์ดํด๊ฐ ์ ์ ๊ฐ๋ค
๋ง์ ใ ใ , ์์ ํ ์ฝ๋๋ Dir์ ์ ๊ทํ ํ๊ธฐ ์ ๋ฒกํฐ์ magnitude๋ฅผ ๋๋ ์คฌ์
๋ญ์๋ฆฌ์ผ ์ ๊ทํ๋ฒกํฐ๋ ํญ์ 1์ด์ผ.. ๋ค๋ฅธ๊ฑธ ๋ด๋ด ์์ธ์ ๋ค๋ฅธ๊ณณ์ ์๋ค
ใ ใ ์๋์ด ๋งํ๊ฒ์ฒ๋ผ z๊ฐ๋๋งค ๋ฐ์ํ๊ฑฐ ๊ฐ์. ๋ด ์ค์์ ์ฒ์์ ๋ณด๊ณ ์ ๊ทํ ๋ฐฑํฐ์ ๋ ธ๋ฆ์ ๋ฌด์กฐ๊ฑด 1์ธ๋ฐ ์ ๋ค๋ฅธ๊ฐ์ด ๋์ค๋๊ฑธ๊น ๋๋ ๋ฉ๋ถ์๋๋ฐ ์๊ณ ์๋ ์ง์์ด ๋ง์๊ณ ๋ด๊ฐ z๊ฐ์ ๊ฐ๊ณผํด์ ๋ฐ์ํ ๋ฌธ์ ์์ด