์์ง์ผ๋๋ ์๋๊ฐ ๋๋ ค์ ๊ทธ๋ฐ์ง ์๋๋ฉด velocity๋ก ์์ง์ฌ์ ๊ทธ๋ฐ์ง ์๋ซ๋ฆฌ๋๋ฐ
๋์ฌํ ๋๋ ๋ํธ์ DomoveX๋ก ๋น ๋ฅด๊ฒ ์์ง์ด๋๊น ๊ฐ๋ ์ฝ๋ผ์ด๋๋ฅผ ๋ซ๊ณ ์ง๋๊ฐ๋ค
๋ฒฝ๋ซ๋๊ฑฐ๋ฉด ๋ ์ด์บ์คํธ๋ก ๋ฒฝ ๊ฐ์งํด์ ๋ฉ์ถ๋๋ฐ ๊ฒฝ์ฌ๋ฉด์ด๋ ๋ฐ๋ฅ์ ๋ซ๊ณ ์ง๋๊ฐ์ ์ด๋ป๊ฒ ํ ์๊ฐ ์๋ค
๋ฆฌ์ง๋๋ฐ๋ collision detection๋ continuous๋ก ๋ฐ๊ฟจ๋๋ฐ๋ ๊ณ์ ์ด๋ฌ๋๋ฐ ๋ค๋ฅธ ๋ฐฉ์ง ๋ฐฉ๋ฒ ์์?
DoMoveX๊ฐ transform์์ฒด๋ฅผ ๊ฑด๋๋ฆผ? ์๋๋ฉด velocity๋ force๋ฅผ ์กฐ์ ํจ?
DoMoveX๊ฐ ์ ํด์ง ์๊ฐ์ ์ ํด์ง ๊ฑฐ๋ฆฌ๋ฅผ ์ด๋์์ผ์ค
์๋ ๊ทธ๋ฌ๋๊น ๊ทธ ์ ํด์ง ๊ฑฐ๋ฆฌ๋ฅผ ๋ฌด์จ๋ฐฉ์์ผ๋ก ์ด๋ํ๋๋ ๊ฑฐ์ง. DoMoveX๋ ๋ด๊ฐ ์๊ธฐ๋ก transform.position์ ์กฐ์ ํด์ ์์ง์ธ๋จ ๋ง์ด์ฌ.
๊ทธ๋ผ ๋น์ฐํ ๋ซ๊ณ ๋ค์ด๊ฐ์ง. ๋ฌผ๋ฆฌ์์ง์ CCDํจ๊ณผ๋ velocity์ force๋ฅผ ์ด์ฉํด์ ์ด๋ํ์๋์ ๋ซ๊ณ ๊ฐ๋ ๊ฒ์ ๋ฐฉ์งํด์ฃผ๋๊ฑด๋ฐ, ์ง์ position์ผ๋ก ๋ฌด๋นํด๋ฒ๋ฆฌ๋ฉด ๊ทธ๊ฒ ๋ ๋ฆฌ๊ฐ ์๋
๊ฐ๋ ๋ซ๋ฆฌ๋๊ฑฐ๋ผ ๋ค๋ฅธ๊ฒ ์์ธ์ธ ์ค ์์์ด ๊ณ ๋ง์ DoMoveX๋ง๊ณ velocity๋ก ์ฝ๋์์ ํด์ผ๊ฒ ๋ค
ใ ใ ๊ทธ๊ฑธ๋กํด๋ด. x = 0์์ x = 10๊น์ง 0.5์ด๋ง์ ๋์ฌํ๋ฉด ๋๋๊น DoMoveX(0,10,0.5f) ์ด๋ฌ๋ฉด ๋๊ฒ ์ง ํธํ๊ฒ ์๊ฐํ๋๋ณธ๋ฐ. ๋ฌผ๋ฆฌ์์งํจ๊ณผ ์ ๋๋ก ์ธ๊ฑฐ๋ฉด 0.5์ด๋์ +10๋งํผ ์ด๋ํด์ผ ํ๋๊ฑฐ๋๊น rigidBody.velocity += Vector3.right * ( 10 / 0.5f ); <-- 0.5์ด๋น 10๋ฏธํฐ๋๊น. ์ด๋ ๊ฒ ์ฃผ๊ฑฐ๋, ๋ rigidBody์ง๋์ด 1์ด ์๋๋ผ๋ฉด rigidBody.AddForce(Vector3.right * (10/0.5f), FoceType.Impulse)๋ก ํด์ค์ผ๋
๋ฐฉ๊ธ ์์ ํ๊ณ ๋์ถฉ ํ์ธํด๋ณด๋ ์๋ซ๋ฆฌ๋๊ฑฐ ๊ฐ์ ๊ณ ๋ง์์ฌ~
ใ ใ ํ์ดํ
ํด๋น ๋๊ธ์ ์ญ์ ๋์์ต๋๋ค.
์ ๊ทธ๊ฑฐ ์ด๋ฏธ ํ์ด ๊ณ ๋ง์:0