๊ฒ์์ ๋ง๋ค๋ค ๋ณด๋ฉด, ํ๋ ์ด์ด์ ์ ์ ์ถฉ๋์ด ์ผ์ด๋๊ฒ ๋ฉ๋๋ค. ์ด ๋ ์ ๋ํฐ ๋ฌผ๋ฆฌ๋ฅผ ์ด์ฉํด ์ด๋ ๋ก์ง์ ๊ตฌํํ๋ค๋ฉดย (Rigidbody2D์ BoxColider2D ์ฌ์ฉ)ย ์๋ก ๋ฐ๋ฆฌ๊ฒ ๋๋๋ฐ, ์ด ๋ ์๋ก ๋ฐ๋ฆฌ์ง ์๊ฒ ํ๋ ๋ฐฉ๋ฒ์ ๊ณ ๋ฏผํด๋ณด๊ณ , ๋์ถ๋ ํด๊ฒฐ๋ฐฉ๋ฒ์ ๊ธฐ๋กํฉ๋๋ค.ย
์์ด๋์ด์ผ๋ฐ์ ์ธ Player vs Enemy Collision์ ์๊ฐํด๋ณด๊ณ , Rigidbody bodyํ์ ์ ํน์ฑ์ ์๊ฐํ๋ฉด์ ์์ด๋์ด๋ฅผ ๋ ์ฌ๋ฆฝ๋๋ค.
Kinematic ํ์ ์ ์ผ๊ฒ ๋๋ฉด, Dynamic ํ์ ์ ์ค๋ธ์ ํธ๊ฐ ์์ ์ถฉ๋ํด๋ ์์ง์ด์ง ์์ต๋๋ค. ์ฆ ๋ฐ๋ฆฌ์ง ์์ต๋๋ค.
(๋จ, Kinematic ํ์ ์ด Dynamic์ ์ถฉ๋ํ๋ฉด ๊ทธ๋ฅ passํฉ๋๋ค.)
๊ทธ๋์ ์์ง์ด๋ ์ค๋ธ์ ํธ๋ค์๊ฒ ์์์ผ๋ก ๋น ์ค๋ธ์ ํธ๋ฅผ ๋ง๋ค๊ณ , ๊ฑฐ๊ธฐ์ ๋ถ๋ชจ์ ๊ฐ์ ํฌ๊ธฐ์ Colider๋ฅผ ๋ง๋ ๋ค, rigidbody type์ Kinematic์ผ๋ก ํด๋ณด์์ต๋๋ค.
red๋ black์ child object์
๋๋ค.์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๊ตฌํํ๊ฒ ๋๋ฉด, ํ ์คํธ๋ฅผ ํด๋ณด๊ธฐ๋์ ์ ์ค๋ธ์ ํธ๊ฐ ๋ ์๊ฐ ๋ฒ๋ฆฝ๋๋ค.
๋ถ๋ชจ, ์์ ์ค๋ธ์ ํธ๊ฐ ์๋ก ์ถฉ๋ํด์ black(parent) ์ค๋ธ์ ํธ๊ฐ ๋ ์๊ฐ๊ฒ ๋๋๋ฐ์, ์ต๋ํ ์ฝ๋ ์์ด ํด๊ฒฐํด ๋ณด๋ ค ํ์ง๋ง, ๋ฑ ํ์ค๋ง ๋ถ๋ชจ ์ค๋ธ์ ํธ์ ์ฝ๋๋ฅผ ์ถ๊ฐํฉ๋๋ค.
ํด๋น ์ฝ๋๋ ๋ณธ์ธ๊ณผ ์์์ ์ถฉ๋์ ๋ฌด์ํ๋๋ก ํฉ๋๋ค.
//Insert this code inside Awake() Physics2D.IgnoreCollision(GetComponent<BoxCollider2D>(), GetComponentsInChildren<BoxCollider2D>()[1]);๊ทธ๋ฆฌ๊ณ ์คํ์์ผ์ฃผ๋ฉด, ์ฌ์ ํ ๋ฐ๋ฆฝ๋๋ค. ์ด๋ ํ๋ ์ด์ด์ ์ ์ black๋ผ๋ฆฌ ์๋ก ์ถฉ๋ํ๊ธฐ ๋๋ฌธ์ธ๋ฐ์, black ๊ฐ์ ์ถฉ๋์ ์๋ํฐ์์ ๊บผ์ค๋๋ค.
๋ค๋ฅธ ๋ ์ด์ด๋ค์ ์ ๊ฒฝ์ฐ์ง ์์ผ์
๋ ๋ฉ๋๋ค.์ด์ ๋ black์ด ์๋๋ผ, ๊ฐ๊ฐ Player, Enemy ๋ ์ด์ด ๊ทธ๋ฆฌ๊ณ red๊ฐ ์๋๋ผ ๊ฐ๊ฐ Rigidbody_child_Player, Rigidbody_child๋ผ๊ณ ๋ถ๋ฅด๊ฒ ์ต๋๋ค. ์ฌ๊ธฐ๊น์ง ํ์๋ฉด, ํ๋ ์ด์ด์ ์ ์ด ์ถฉ๋ํ์๋ ์๋ก ๋ฐ์ง ์๊ณ ์ ์๋ฆฌ์ ์๊ฒ ๋ฉ๋๋ค.
Enemy vs Enemy ์ถฉ๋์?Dynamic ํ์ ์ธ Enemy๊ฐ ์ด๋ํ๋ค๊ฐ ๋ค๋ฅธ Enemy์ child์ ๋ฟ๊ฒ๋๊ณ , child๋ Kinematic์ด๊ธฐ ๋๋ฌธ์ ๋ฐ๋ฆฌ์ง ์์ต๋๋ค. Enemy vs Enemy ์ถฉ๋๋ง ์๋ํฐ์์ ๊บผ์ฃผ๋๋ก ํฉ๋๋ค.
Player,Enemy vs Wall ์ถฉ๋์?Dynamic ํ์ ์ธ P or E๊ฐ Static Type์ธ Wall์ ๋ฟ์ผ๋ฉด, ๋ฐ๋ฆฌ์ง ์์ต๋๋ค. child ์ค๋ธ์ ํธ์ Wall ์ถฉ๋์ ๋ถํ์ํ๋ฏ๋ก ์๋ํฐ์์ ๊บผ์ฃผ๋๋ก ํฉ๋๋ค.
Player,Enemy vs Bullet, HitableObject ์ถฉ๋์?์ ์์ ์ผ๋ก ์๋ํฉ๋๋ค. ๋ค๋ง ๋ถํ์ํ ์ฐ์ฐ์ ํผํ๊ธฐ ์ํด ์ต์ข ์ ์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด Layer Collison Matrix๋ฅผ ์ค์ ํ๊ฒ ์ต๋๋ค.
ํ๋ก์ ํธ์ ๋ฐ๋ผ ์ค์ ๋ณ๊ฒฝ์ ํ ์๋ ์์ต๋๋ค.์ ๋ฆฌ(rigidbody type ์ค์ )
Player ์ค๋ธ์ ํธ Rigidbody = Dynamic (layer1)
Player ํ์ ์ค๋ธ์ ํธ Rigidbodyย = Kinematicย (layer2)
Enemy ์ค๋ธ์ ํธ Rigidbody = Dynamicย (layer3)
Enemy ํ์ ์ค๋ธ์ ํธ Rigidbodyย = Kinematicย (layer4)
(์ถฉ๋ ๋ ์ด์ด ์ค์ )
1 vs 4, 2 vs 3, 3 vs 4 on, ๋๋จธ์งย ๋ค off
+ ๋ถ๋ชจ ์์ ์ค๋ธ์ ํธ ๋ผ๋ฆฌ ์ถฉ๋off
์๋ฆฌ = ๋ค์ด๋๋ฏน์ด ์์ง์ฌ์ ํค๋ค๋งํฑ๋ฟ์ผ๋ฉด ์๋ฐ๋ฆผ.
๋ค๋ง ํ ์ค๋ธ์ ํธ๊ฐ 2๊ฐ์ ์ถฉ๋์ฒด๋ฅผ ๊ฐ์ง๋ค๋ ์ ์ด ๊ฒ์ ํ๋ฆฌํฐ ๋ฉด์์ ์ผ๋ง๋ ๋ถํ๋ฅผ ์ค์ง ๋ชจ๋ฅด๋๊ฒ ๋จ์ .
๊ทธ๋์ ์ต๋ํ ๋ถํ์ํ ๋ฌผ๋ฆฌ ์ฐ์ฐ์ ์ค์ด๊ธฐ ์ํด, Rigidbody type์ ์ ๊ทน์ ์ผ๋ก ์ด์ฉํ๊ณ , Collision Matrix๋ฅผ ์ต์ ํ

์ ๋ณด๊ธ์ถ
์ ๋ณด์ถ
์ด๊ฑฐ ๊ทธ๋ด๋ฏํด๋ณด์ฌ์ ์ ํ์ ํ์ ํด๋ดค๋๋ฐ ์๋จ, ํน์ git ๊ฐ์๊ฑฐ ์์?
๋ฆฌ์ง๋๋ฐ๋์ collision detection์ continuous๋ก ํด์ผ๋๋ค ์ด๊ฑฐ ์ํ๋ฉด ๋จผ์ง์ ํ๋ ๋ฐ๋ฆผ
์๋ ์บ๋ฆญํฐ๊ฐ ์ด๋์ค์ผ๋๋ ์ถฉ๋์ฒดํฌ๊ฐ ๋น ๋ฆฟ๋น ๋ฆฟํ๊ฒ ์ด๋ค์ ธ์ ์๋ก ์๋ฐ๋ฆฌ๋๋ฐ, ์ ์ ๋ฉ์ถฐ์๋ค๋๊ฐ ํด์ ์ฌ๋ฆฝ๋ชจ๋๋ก ๊ฐ๋ฉด ๋ค๋ฅธ ์บ๋ฆญํฐ๊ฐ ๊ทธ ์บ๋ฆญํฐ๋ฅผ ๋ฐ์๊ฐ ์๋ค ๋ค์ด๋๋ฏน ๋ฆฌ์ง๋๋ฐ๋๊ฐ ํค๋ค๋งํฑ ์์ผ๋ก ์นจํฌํ๊ณ ์๋ก๊ฐ ์๋ก์ ํค๋ค๋งํฑ๋๋งค ๋ฐ์ฉ ๋ฐ๋ ค๋จ
์งํ์ค์ธ ํ๋ก์ ํธ์์ ์ฌ ์๋ก ๋ง๋ค์ด์ ํ ์คํธ ํ๊ฑฐ๋ผ์, ํ์ ์๋ก ๋นผ์ git ์ฌ๋ ค๋๋ฆผ. ๊ธ๊ณ continuous์ํด๋ ์๋ฐ๋ฆฌ๋๋ฐ.. git ์ฌ๋ฆฌ๋ฉด ์๊ฐ๋ ๋ ํ๋ฒ ๋ด์ฃผ์
ใ ใ ใ ใ ํน์ ์บ๋ฆญํฐ๋ค ์์ง์ด์ง ์์๋๋ ์ ๋ฐ๋ฆฌ๋์ง ๊ทธ๊ฑฐ ํ ์คํธํด๋ณด์ผ continuous ์ํด๋ ์ด๋์ค์ธ ์บ๋ฆญํฐ๋ ๋ชป๋ฐ์์
https://github.com/Dripmaster/UnityPhysics
ใฑใฑ
์ฝ๋ฆฌ์ ํ๋ฆฌ์ ํ๋ ๋ง๋ค์ด์ ์์ ์ด๋์ ์ถฉ๋ ์ํ๊ฒ ๋ง๋ค๋ฉด ๋๋์ง ์๋๊ฐ
์ ๋ํฐ์์ ์ง์ํ๋ ๊ธฐ๋ฅ์? ๋ณธ๋ฌธ์ ์ฝ๋ ํ์ค ์๋๊ฒ ํด๋น ๋ด์ฉ์ด๊ธด ํจ
ใ ใ ์๋ง ๊ฐ์ ๋ด์ฉ์ผ๊ฑฐ๊ณ ์ ๋ํฐ์์ ๊ธฐ๋ฅ ์ง์ํ๋๊ฑธ๋ก ๊ธฐ์ตํจ
https://gall.dcinside.com/mgallery/board/view/?id=game_dev&no=51786
ํ ์คํธ ๊ฒฐ๊ณผ์