๊ตฌ๋ฅด๊ธฐ๋ฅผ ๊ตฌํํ๋ค ์น๋ฉด
๋๋ ๊ตฌ๋ฅด๊ธฐ๋ฅผ ํ ๋ ๋ฌด์กฐ๊ฑด X๊ฑฐ๋ฆฌ ์ด์ ๋์๊ฐ์ผํ๋ค ์๊ฐํ์
๋๊ฐ ์ด๋ผ
1. ๊ตฌ๋ฅด๊ธฐ ๋ฒํผ์ ๋๋ฅผ ๊ฒฝ์ฐ
2. ํ์ฌ ํ๋ ์ด์ด ์๋ ์ ๋ณด์ ๋ฐ๋ผ์(์์ดํ ์ ๋ฐ๋ผ ์๋ ์ ๋ณด๊ฐ ๋ณ๊ฒฝ ๊ฐ๋ฅ)
3. ๋ฆฌ์ง๋ ๋ฐ๋๋ฅผ (์๋)x(๊ตฌ๋ฅด๊ธฐ ๋ฌด์ ์๊ฐ)๋งํผ ์ด๋ ์ด๋ ๊ฒ ์๊ฐํ๋๋ฐ(์ด๋ ์๋์ ๋น๋กํด์ ํ์ผ ๋ชฉํ๋ฅผ ๋ฐ์์ค๊ณ ๋ฐ๋ก ๊ทธ์๋ฆฌ๋ก ์ด๋ํจ)
์ด๋ ๊ฒํ๋ฉด์ ๋ฌธ์ ๊ฐ ์๋๊ฐ ๋๋ฌด ๋น ๋ฅผ ๊ฒฝ์ฐ์ ๋ฒฝ์ ๋ซ๊ฑฐ๋, ์ด๋ฒคํธ๋ก ๊ตฌํํ ๋ ๋ฒฝ์ ๋ซ๋๋ผ๊ณ
๊ทธ๋ผ ์์ ์๊ฐ์ ์ข ๋ฐ๊ฟ์ ๊ผญ ๊ตฌ๋ฅด๊ธฐ๋ผ๋ ์์ผ๋ก ๊ฐ ํ์๊ฐ ์๋ค์น๊ณ
1.๊ตฌ๋ฅด๊ธฐ ๋ฒํผ์ ๋๋ฅผ ๊ฒฝ์ฐ
2.๊ทธ๋ฅ ๊ตฌ๋ฅด๊ธฐ ์๊ฐ๋งํผ ์ ๋๋ฉ์ด์ ๋ง ๋ณด์ฌ์ฃผ๊ณ , ๋ฌด์ ์๊ฐ๋ง ์ฃผ๋๊ฑฐ์ง
์ด๋ฌ๋ฉด ์ ์๋ฆฌ ๊ตฌ๋ฅด๊ธฐ๋ ๊ฐ๋ฅํ๊ณ , ๊ตฌํ๋ ์ฝ๊ณ ์ด์ฐจํผ ์ด๋ ์๋๋งํผ ๊ตฌ๋ฅด๊ธฐ์ด๋๊ฑฐ๋ฆฌ๋ ๋์ผํ๋๊น ํธํ์ง ์์๊น ์ถ๊ธฐ๋ํ๊ณ
๊ทผ๋ฐ ๋ฌธ์ ๋ ํ ๋ค์ด ์ํฐ ๊ฒ์์์ ๊ตฌ๋ฅด๊ธฐ๋ฅผ ํตํด์ ํจ์ ์ ํต๊ณผํ๋ ๊ธฐ๋ฏน๊ฐ์ ๊ฑธ ๋ฃ์๋จ ๋ง์ด์ผ?
๊ทธ๋ผ 2๋ฒ์ผ๋ก ๊ตฌํํ ๊ฒฝ์ฐ์ ๊ตฌ๋ฅด๊ธฐ๋ฅผ ํตํด์ ํจ์ ์ ํต๊ณผํ๋ ๊ฑธ ์ฐ๊ธฐ๊ฐ ํ๋ฌ.
๊ฒ์์ ๋ชจ๋ ์์์์๋ ๊ฒฐ๊ตญ ๊ทธ ์์๋ฅผ ๋ฃ์ผ๋ฉด ์จ๋จน์ด์ผํ๋๊น ๊ฒฐ๊ตญ ๊ตฌ๋ฅด๊ธฐ๋ฅผ ํตํด์ ํจ์ ์ ํต๊ณผํ๋ ๊ธฐ๋ฏน์ ๋ฃ์
๋ญ๋ ๋ฌ์ง ์๊ณ , ๋ฐํ ์๋๋ฐ, ๊ตฌ๋ฅด๊ธฐ๋ฅผ ํตํด์ ์ด๋ํ๋ ์์ผ๋ก ๋ง์ด์ง
๊ทธ๋ผ ์ด๊ฑธ ์ด๋ป๊ฒ ์์ ํด์ผํ ๊น
๋๋ค ์๊ฐ์ ์ด๋ฐ?
๋ ๋ค ์ฅ๋จ์ ์ด ์๋๋ฐ, ์ด๋ป๊ฒ ์๊ฐํ๋
๊ตฌ๋ฅด๊ธฐ๋ฅผ ๋ฃ์์ผ๋ฉด ๊ฒฐ๊ตญ ์ต๋ํ ์จ๋จน์ด์ผํ๋๋ฐ, ๊ตฌํ์ ๋ฐ๋ผ์ ๊ฒฐ๊ตญ ์จ๋จน๋ ๋ฐฉ๋๊ฐ ๋ค๋ฅด๋๊น
์๊ฐ๋ณด๋ค ์ด๋ ต๋ค.
2๋ฒ ์์ผ๋ก ํ๋ฉด ์ด๋ ์ํ๋ฉด์ ๊ตฌ๋ฅด๊ธฐ ๋๋ฅด๋ฉด ์ ์๋ฆฌ์์ ์ ๋๋ฉ์ด์ ๋ง ๋์ค๋ ๊ฑฐ ์๋? ๊ทธ๋ฌ๋ฉด ์ข ์ด์ํ ๋ฏ
ใ ใ ์ด๊ฑฐ๋ ํ์ฌ๋ ์๋๊ฐ 0์ผ๋ ๊ตฌ๋ฅด๊ธฐ ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ฐ๋ ์ํ๊ฒ ๋์ ๊ทธ๊ฑด ๋ฌธ์ ๊ฐ ์๋๋ฐ, ์ฌ์ค ์ง๊ด์ ์ด์ง ์๋ค๋ ๋๋๋ ์๊ธดํจ
๋ด ์๊ฐ์ ๊ฑ 1๋ฒ์์ผ๋ก ํ๊ณ ๋ฒฝ๋ซ๊ธฐ๋ฅผ ๋ง๋ ๊ฒ ์ฐจ๋ผ๋ฆฌ ๋ ์ธ๊ฒ๋จนํ๋ฏ? 2๋ฒ ์์ผ๋ก ํ๋ฉด ์ด๋์ ๋ ์์ ๋ชปํ ๋ฒ๊ทธ๊ฐ ๋ง์ด ์๊ธธ ๊ฒ ๊ฐ์๋ฐ
์ง๊ธ ๊ทธ ๋ฒฝ๋ซ๊ธฐ๋ฅผ ์ด์ ํ๋ฃจ์ข ์ผ ๊ณ ์น๊ณ ์๋๋ฐ ๋ชจ๋ฅด๊ฒ ๋ค ์ด๊ฑฐ ์ ๋ฒฝ์ ๋ซ๋์ง ๋ชจ๋ฅด๊ฒ ์ ์ฐพ์๋ณด๋๊น ์ด๋ฒคํธ๋ก ๊ตฌํํ๋ฉด์ ๋ฌธ์ ๊ฐ ์๊ธด๊ฑฐ ๊ฐ์๋ฐ
https://docs.unity3d.com/2023.3/Documentation/Manual/ContinuousCollisionDetection.html
์๋ฐ
๊ฒ๋ ์๊ณ ์๋๋ฉด ๊ฑ ์ฝ๋ผ์ด๋ ํฐ๋๋ง์ด๋ผ๊ณ ๊ฒ์ํ๋ฉด ๋์ด
๊ณ ๋ง๋ค
์นํจ๋ถํฐ ์ด
์์ฑ์ ํด์ผ ์์ง ๊ทธ๋ฆฌ๊ณ ์ด๋ฐ๊ฑฐ ์ฑ๊ณตํ ๋ณด์ฅ๋ ์๊ณ . ๋๋ ๋ชป๋จน์ ์นํจ์ด ์๋๋ฃฉํ๋ค
๋ ๊ตฌ๋ฅด๊ธฐ ์ค์ ์ฝ๋ผ์ด๋ ๊บผ๋ฒ๋ฆฌ๊ณ ๋ฒฝ ๊ฐ์ ๊ฑด ๋ ์ด์บ์คํธ๋ก ์ธ์ํ๊ฒ ํจ - dc App
์ฝ๋ผ์ด๋ ๊บผ๋ฒ๋ฆฌ๋ฉด ์ด์์ด ํต๊ณผํ์ง ์๋? ๋๋ ์์ ๊ตฌ๋ฅด๊ธฐํ ๋๋ ๋ฐ๋ฏธ์ง๋ฅผ ์์ ๊ฒ ํ๋๋ฐ ๋๋ ๋ฒฝ์ ์ฝ๋ผ์ด๋ ์ฒดํฌํจ
private bool CheckCollision() { Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position, 0.5f); foreach (Collider2D collider in colliders) { if (collider.gameObject != gameObject && collider.isTrigger) { return true; // ์ถฉ๋์ด ๊ฐ์ง๋๋ฉด true ๋ฐํ } } return false; // ์ถฉ๋์ด ๊ฐ์ง๋์ง ์์ผ๋ฉด false ๋ฐํ }
๊ตฌ๋ฅด๊ธฐ ์ค์ ๊บผ๋ฒ๋ฆฌ๊ฒ ํ๋ค๋ ๊ฑฐ. ์ด์ฐจํผ ๋ฌด์ ์ด๋๊น ์ด์๊ฐ์ ๊ฑฐ ํต๊ณผํด๋ ๋๋๊น. ํจ์ ์ ํธ๋ฆฌ๊ฑฐ๋ก ํด๋๋ ๋ฐฉ๋ฒ๋ ์์ง. - dc App
์ผ ๋ ์ฒ์ฌ๋? ๋ญ๋ ๋ฌ์ง๋ก ํธ๋ฆฌ๊ฑฐ๋ก ํด๋๊ณ ๋ํ ์ด๋ฒคํธ ๋ฐ์ํ๊ฒํ๋๋ฐ ์ฝ๋ผ์ด๋๊ฐ ์์ผ๋ฉด ๋ํ ์ด๋ฒคํธ ๋ฐ์ ์ํ๋๊น 2๋ฒ์์ผ๋ก ํด๋๋๊ฒ ๋ค
๋๋ ๊ตฌ๋ฅด๊ธฐ๋ฅผ ํตํด์ ์ด์์ ์ง์ฐ๊ณ ์ถ์๋ฐ(๊ฑด์ ์ฒ๋ผ) ์ด๊ฑด ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผํ ๊น ์ด๊ฑด ๋ฐฉ๋ฒ ์๋ ์
๋ ์ฌ์ด๋๋ทฐ๋ผ ๋ญ๋ ๋ฌ์ง๋ ํจ์ ์ ํธ๋ฆฌ๊ฑฐ๋ก ํด๋๊ณ ๋ฟ์ผ๋ฉด ๋๋ฏธ์ง ๋ฐ์ผ๋ฉด์ ์๋ก ํ์ด์ค๋ฅด๊ฒ ํ์ - dc App
์, ์ด๊ฒ ๊ธฐํ๋ ฅ์ ์ฐจ์ด๊ตฌ๋. ์ง์ง ๋๋ ๊ฐ ๊ธธ์ด ๋ฉ๊ตฌ๋
์ด๋ ๊ฒํด๋ฒ๋ฆฌ๋๊น ๋ฌธ์ ๊ฐ ์ฝ๋ผ์ด๋๋ฅผ ๊บผ๋ฒ๋ฆฌ๋ ๋ฒฝ ์์ฒด๋ฅผ ํต๊ณผํด๋ฒ๋ฆฌ๋ค ์ ์ด๊ฒ๋ ๋ฌธ์ ๊ตฌ๋ง
๋ ๊ทธ๊ฑธ ๋ ์ด์บ์คํธ๋ก ํด๊ฒฐํจ. ๋ ์ด์บ์คํธ๋ก '๋ฒฝ ๊ฐ์ง๋๋ฉด ์ด๋ ์ค๋จ' ์ด๋ฐ ์์ผ๋ก. - dc App
๋ ์ด์บ์คํธ๋ ๊ทธ๋ผ ๋งค์๊ฐ ๋ฐ์์ผํ๋๋ฐ ๊ทธ๋ผ ๋ฉ๋ชจ๋ฆฌ์ ๋ฌธ์ ๊ฐ ์์ง ์์๊น ์ ๋จธ๋ฆฌ ์ํ๋ค.
๊ตฌ๋ฅด๊ธฐ๋ ๊ทธ๋ฅ ๊ฒฐ๊ตญ ์ด๋์ด๊ณ , ์ด๋์ ๋งคํ๋ ์๋ง๋ค ๊ฑฐ๋ฆฌ๋ฅผ ์์ง์ด๋๊ฑด๋ฐ, ๋งค ํ๋ ์, ์ด๋๋ ์์น ๊ฐ์ผ๋ก ์ด๋๊ฐ๋ฅํ์ง ์ฒดํฌํ๊ณ , ๊ฐ๋ฅํ๋ฉด ์์น ์ฎ๊ธฐ๋ฉด๋๊ณ ์๋๋ฉด ์ ์๋ฆฌ์ ๊ฐ๊ฒ ํ๋ฉด๋จ. ์๋ฅผ๋ค๋ฉด ๋ฒฝ ๋ซ๋๊ฒ ๋ฌธ์ ๋ฉด ์ ๊ธฐ ์ด๋๊ฐ๋ฅํ์ง ์ฒดํฌ ๋ถ๋ถ์์ ํ์ฌ์์น -> ์ด๋๋ฐฉํฅ ์ด๋๊ฑฐ๋ฆฌ๋ก ๋ ์ด ์๊ณ , ๋ฒฝ์์ผ๋ฉด, ์ด๋ ์ขํ๋ฅผ ์ ์๋ฆฌ๋ก ๋ฐํํ๊ฑฐ๋ ๋ฒฝ ๋ฐ๋ก ์๊น์ง๋ก ์กฐ์ ํ๊ฑฐ๋ ํ๋ ์์ผ๋ก.
์ ๊ทธ๊ฒ ์๊ฐ๋ณด๋ค ๋นก์ธ๋ค. ๋ ์ด ์๊ฒ ํด์ ํ ๊น
์ผ๋จ 2๋ฒ ๋ฐฉ๋ฒ์ผ๋ก ์ฌ๊ตฌํํด๋ณด๋ฉด์ ์ฝ๋ ๋ค์ ์ง๋ด์ผ๊ฒ ๋ค ๊ณ ๋ง๋ค
์๋ง 2d์ผ๊ฑฐ ๊ฐ์๋ฐ ๋๋ ๋น์ทํ๊ฑฐ๋ก ๊ณ ์ํ์ ์์ ๋ ์ ํํ๋ผ ์จํด์บ์คํธ๋ก ํด๊ฒฐํ์ ๊ฑด์ ๊ฐ์๊ฑฐ๋ฉด 1๋ฒ์์ผ๋ก ์งํํ๊ณ ๊ตฌ๋ฃจ๊ธฐ ๋๋ฆ->๋ฐ์ค์บ์คํธ๋ก ๊ตฌ๋ฅด๊ธฐ ๊ฑฐ๋ฆฌ๋งํผ ๋ ์ด ๋ฐ์ฌ->๋ง์ฝ ๋ฐ์ค์บ์คํธ๋ก ๊ฒ์ถ๋๊ฒ ์์ผ๋ฉด ์ ์์ ์ผ๋ก ๊ตฌ๋ฅด๊ธฐ ๋๊น์ง ์งํ->๋ฒฝ๊ฐ์๊ฒ ๊ฒ์ถ๋๋ฉด ๋ฐ์ค์บ์คํธ๊ฐ ๋ถ๋ซํ ์์น์ ์ขํ๊น์ง๋ง ์บ๋ฆญํฐ ๊ตฌ๋ฅด๊ธฐ๋ก ์ด๋
๊ทธ๋ฆฌ๊ณ ๊ธฐํ์ ์ผ๋ก๋ ๊ตฌ๋ฅด๊ธฐ ํ๋๋ฐ ์ ์๋ฆฌ ๊ตฌ๋ฅด๊ธฐ ๋๋๊ฑด ๊ต์ฅํ ์๋ชป๋๊ฑฐ๋ผ ์๊ฐํจ ๋๊ฐ ์ฐธ์กฐํ ๋งํ ๋ชจ๋ ๊ฑด์ ๋ฅ๋ ๊ฑฐ์๋ค ์ ์๋ฆฌ ๊ตฌ๋ฅด๊ธฐ ์์๊ฑฐ์
๋ ์ง๊ธ ์ด๊ฑธ๋ก ์ดํ์งธ ๊ณ ๋ฏผ์ค์ธ๋ฐ, ์ ๋ฏธ์น๊ฒ ๋ค. ์ง์ง ์ฌํผ ์ด๋ถ๋ถ ์คํตํ๊ณ ๋ค๋ฅธ๊ฑฐ ๊ตฌํํ๋ค ๋ค์ํด์ผ์ง
์ผ๋จ ๋๋ ๋ ์ด์บ์คํธ๋ก ๋ค์ ์งํํ๋๋ฐ, ํ์ฌ ์ด๋ถ๋ถ์์ ๋๋ฌด ์๊ฐ ์ก์๋จน์ด์ ์ผ์ ์ ์ฐจ์ง ์๊ธฐ๋๊น ์ผ๋จ ์ค๋์ ๋ชฌ์คํฐ ์ ๋๋ฉ์ด์ ์ด๋ ์๋ฉ ์์ ํด์ผ๊ฒ ๋ค. ์กฐ์ธ ๊ณ ๋ง๋ค
์๊ฐ๋ณด๋ค ๋ ์ด์บ์คํธ๋ฅ๋ ๋งค์ฐ ๊ฐ๋ณ๊ณ ๊ฐ๋ ฅํ ๋ฌด๊ธฐ์ ์ ๋ํฐ ๋ฌผ๋ฆฌ์์ง์ ๋๋ฌด ๋ฏฟ์ง๋ง ๋๋ oncollision์ผ๋ก ํด๊ฒฐํ๋ ค๋ค ํ๋ฌ๋์ ๊ณ ์ํ๊ณ ๋ ์ด์บ์คํธ๋ก ํ๋ฃจ๋ง์ ํด๊ฒฐํจ
๋ ์ฒดํฌ ์ฝ์ค๋ฃจ์ ์ด ๋ฌด์ ์ธ๊ฒ๊ฐ์๋๋ฐ ์ด๋ฒ์ ์ฌ๊ธฐ์ ๋๋ฌด ์๊ฐ ๋จน์๋ฏ. ์ฌํผ ๊ณ ๋ง๋ค. ์ด๊ฑด ๋ด์ผ ํด๋ณผ๋ฏ. ์ค๋ ํด๊ฒฐ ๋ชปํด์ ๋ค๋ฅธ๊ฑฐ ํด๋ณผ๋ผ๊ณ ๋ค๋ง๋๋ก ํด๋ณด๊ณ ์๋๋ฉด ๋๋ฌ๊ฒ
์ด๊ฑฐ ์ ๋ํฐ๋ฉด ๊ทธ๋ฅ ์ฝ๋ฃจํด์ผ๋ก ์ง ๋ค์์ ์ผ์ ์๊ฐ๋์ velocity๋ง ๊ณ์ ์ฃผ๋ฉด ๋ฒฝ ๋ท์์ผ๋ ์๋๊ฑฐ ์๋?
translate ๊ฐ์๊ฑฐ ์์ฐ๊ณ velocity๋ง ์ฐ๋ฉด ๋๋ ๋ฌธ์ ๊ฐ์๋ฐ