Unreal์๋ ์์์ ๊ณผ ๋์ , ๊ทธ๋ฆฌ๊ณ ๋ํ์ ๋ชจ์๊ณผ, ๋ํ์ ๋กํ ์ด์ ์ ์ ๋ ฅํ๋ฉด ๊ทธ๋๋ก ํธ๋ ์ด์ค(์ถฉ๋ ๊ฒ์ถ)์ ํด์ฃผ๋ ํจ์๊ฐ ์์. ํํธ ๋ฐ์ค๋ฅผ ๊ตฌํํ๊ธฐ ์ํด์ ์ด ํธ๋ ์ด์ค ํจ์๋ฅผ ์ ๊ทน ์์ฉํด์ผ ํ๋๋ฐ, ์ด๊ฑธ ์จ๋จน๋ ๋ฐฉ๋ฒ์ ๋๊ฐ์ง์.
1) ๋งค ํ๋ ์๋ง๋ค, ์์ก์ด๋ถํฐ ์นผ๋ ๋๊น์ง๋ฅผ ํธ๋ ์ด์คํด, ๋ฟ๋ ์ ๋ค์ ๋ํด์ ์ถฉ๋ ์ฒ๋ฆฌ๋ฅผ ํ๋ค.
2) ๋งค ํ๋ ์๋ง๋ค, ์บ์๋ ์ด์ ํ๋ ์์ ์์ก์ด์ ์นผ๋ ๋ ์ ๋ณด๋ฅผ ๋ฐํ์ผ๋ก ์นผ๋ ์ ๋ณ์๋ฅผ ํ์ ํ ๋ค, ์นผ๋ ์ด ์์ง์ธ ๊ฑฐ๋ฆฌ๋ฅผ ๋ํ์ผ๋ก ๊ทผ์ฌํด ๋ฒ์์ ๋ํด ํฉ์ธ๊ธฐ ๊ฒ์ถ์ ํ๋ค.
3) ๊ทธ๋ฅ ๊ฒ์ ์ถฉ๋์ฒด๋ก ์ค์ ํ๊ณ ๊ฒ์ ์์คํ ์ Overlapped() ์ด๋ฒคํธ์ ํจ์์ฑ์ ๋ฐ์ธ๋ฉํ๋ค.
1)์ ๊ตฌํํ๋ ๊ฒ ์ ๋ง ๊ฐ๋จํจ. (์์ฌ ์ฝ๋) Trace(BladeBegin, BladeTip)
๋์ด๊ฑฐ๋ . ํ์ง๋ง, ์ด ๋จ์ ์ ํ๋ ์ ๊ฐ๊ฒฉ์ด ํฌ๋ฉด, ๊ทธ ์ฌ์ด์ ๋๊ธด ์ ์ ๋ํด์ ์ถฉ๋ ๊ฒ์ถ์ด ๋ถ๊ฐ๋ฅํ๋ค๋ ๋จ์ ์ด ์์. ๋ง์ฝ ํ๋ ์์ด ๋๋จ์ด์ง๋ฉด? ํ๋๋ฅด๋๋ฐ ํ๋ ์ ๊ฐ๊ฒฉ ์ฌ์ด์ ์ ์ด ๊ปด์ ์นผ์ด ์ ์ ํต๊ณผํด๋ฒ๋ฆฌ๋ ์ํฉ์ด ์๊ธฐ๋ ๊ฑฐ์. ๊ทธ๋์ ์ด๊ฑด 60ํ๋ ์ ์นผ๊ณ ์ ํ ์ ์๋ ์ํฉ์ด ์๋๋ฉด ๊ทธ๋ค์ง ์ธ๋ชจ๋์์.
3)์ ๋ฌผ๋ก ์ด์์ ์ธ ํด๊ฒฐ์ฑ ์. ํ์ง๋ง ์ธ๋ฆฌ์ผ ์์ง์ Overlap ํ์ ์ ์ข ๋ฌธ์ ๊ฐ ์๋๋ฐ, Overlap์ด ๋ง๋ค์ด๋ด๋ Hit Event(์ถฉ๋ ๊ฒฐ๊ณผ ๊ตฌ์กฐ์ฒด)๋ Collision์ ๊ทธ๊ฒ๊ณผ ๋ฌ๋ฆฌ ์ด๋ค ์ ์ฉํ ์ ๋ณด๋ ํฌํจ์ ์ ํจ. ๋ญ ์ถฉ๋๋ฉด์ ๋ ธ๋ง์ด๋, ์ถฉ๋ ๋ฐฉํฅ, ์ถฉ๋ ์์น ๋ฑ๋ฑ... ๋ฐ๋ผ์ ๊ฒ์ด ์ ์ ๋งํ๋ค๋ ์ฌ์ค๋ง ์ ๋ฟ, ์ด ๊ฒ์ด ์ ์ ์ด๋ ๋ถ์๋ฅผ ๋๋ ธ๋, ํ๋ ๊ฑด ์ ์๊ฐ ์๋ค.
๊ฒฐ๊ตญ 2)๋ฅผ ๊ฐ์ ๋ฐ๊ฒ ๋๋๋ฐ, ๋ฌธ์ ๋ ํธ๋ ์ด์ค๊ฐ ๋ง๋ฒ์ด ์๋๋ผ์, Begin๊ณผ End๋ง ์ฝ ์ฐ์ด์ค๋ค๊ณ ์นผ๋ ๋ชจ์ ๊ทธ๋๋ก ์ด์๊ฒ ํฉ์ธ๊ธฐ ๊ฒ์ถ์ ํด์ฃผ๋ ๊ฒ ์๋.
์์ ๊ฐ์ด ์นผ์ ํ๋๋ฅด๋๋ฐ, ํฉ์ธ๊ธฐ ๊ฒ์ถ์ ์ข ์ ๊ณผ ์์์ ์ ์์ ๊ฐ์ด ์ก๊ณ , ๋ฐฉํฅ์ ์ข ์ -์์์ ์ Rotator๋ก ์ก์ ๋ค, Shape์ ์ ๋นํ ๊ฒ์ ๋ชจ์์ ๋ฒกํฐ x20+y20+z100 ์ ๋ฃ๋๋ค๊ณ ์น๋ฉด, ํธ๋ ์ด์ค ๊ฒฐ๊ณผ๋ ์ด๋ ๊ฒ ๋จ.
์์์ ๋ณด๋ฉด ์๊ฒ ์ง๋ง, ๋ด๋ ค์ฐ๊ธฐ๋ฅผ ํ ๋ ํธ๋ ์ด์ค ๊ฒฐ๊ณผ๊ฐ ์๋นํ ์๋ง์ด๋ค. (40์ด ๋ถ๊ทผ๋ถํฐ ๋ณด๋ฉด ๋จ.)
์ด๊ฒ ๋ญ๊ฐ ๋ฌธ์ ๋? ์ฐ๋ฆฌ๊ฐ ๋ฐ๋ผ๋ ๊ฑด ์ด๋ฐ ํฉ์ธ๊ธฐ ๊ฒฐ๊ณผ๊ฑฐ๋ .
๊ฒ์ ๋๊ฒ ํ๋๋ฌ์ผ ํ๋๋ฐ, ๊ฒ์ ์ผ๋ก ์ง์ ํ Shape์ Pitch์ Yaw๋ ์ง์ ์ด ๋์ง๋ง, Roll์ ์ง์ ์ด ๋์ง ์์์, ๊ฒ ๋์ ์กฐ๊ธ๋ง ๋น์ค๋ฌํ ๋๊ณ ํ๋๋ฌ๋, ํํธ๋ฐ์ค์ ๊ฒ์ ์ ํํ๋ ์์ ํ ์๊ณก๋์ด๋ฒ๋ฆฌ๋ ๊ฑฐ์.
์ Roll์ ์ง์ ์ด ์ ๋๋๋,ย
์ด๋ค ๋ฒกํฐ๋ฅผ ๋ค๋ฅธ ๋ฒกํฐ๋ก ํ์ ์ํค๊ณ ์ ํ ๋, ์ฌ์ค Roll์ ํ์๊ฐ ์์. Yaw์ Pitch๋ง ์์ผ๋ฉด 360๋ ์ ๋ถ ์ปค๋ฒํ ์๊ฐ ์๋ฐ.
๋ฐ๋ผ์ ๊ทธ๋ฅ TraceEnd - TraceBegin์ ๋กํ ์ด์ ์ ๋ง๋ค์ด๋ด์ผ, Roll์ ๊ทธ๋ฅ 0์ด ์ง์ ์ด ๋์ด๋ฒ๋ฆฌ๊ณ , ๋ฐ๋ผ์ ์ ๋๋ก ๋ ํํธ๋ฐ์ค๋ฅผ ๋ง๋ค ์๊ฐ ์๊ฒ ๋๋๊ฑฐ์.
๋ฌผ๋ก ๋ฌด์ํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก ๊ฒ์ ์ ์ฒด๋ฅผ ๋ค๋ฎ๋ Sphere๋ฅผ ํํธ๋ฐ์ค๋ก ๋ง๋๋ ๋ฐฉ๋ฒ๋ ์๊ฒ ์ง๋ง, ์ฌ์ธํ ๊ฒ์ํ๋ ์ด์๋ ๋ค์ ์ด์ธ๋ฆฌ์ง ์์ ใ .
๊ทธ๋์ ๊ณ ๋ฏผ๊ณผ ๊ณ ์ฌ์ ๊ฑฐ๋ญํ ๊ฒฐ๊ณผ, ํด๋ฒ์ ์์๋๋ค.
๋ฌผ๋ก ๋๋ํ ํฝ๋ค์ด๋ผ๋ฉด ์ด๋ฐ ๊ณ ๋ฏผ์ ํ ํ์์กฐ์ฐจ ์์๊ฒ ์ง๋ง, ๋จธ๋ฆฌ๊ฐ ๋์ ๋๋ก์๋ ๋ช ์๊ฐ ๋์์ด๋ ๋จธ๋ฆฌ๋ฅผ ์ธ๋งค๊ณ ๊ณ ๋ฏผํ๋ ๋ฌธ์ ์์ ใ ใ
๋ฐ๋ก, ๊ฒ์ ๋์ด ํฅํ๋ ๋ฐฉํฅ(x)๊ณผ ๊ฒ์ด ์งํํ๋ ๋ฐฉํฅ(y)์ ์ธ์ ํด์ UpVector(z)๋ฅผ ๊ตฌํ ๋ค, ๊ทธ Z์ Y๋ก ์ขํ๊ณ๋ฅผ ๋ง๋ค์ด์ ๊ทธ๊ฑธ Rotator๋ก ํํํ๋ฉด ์์ง์ ํ๊ณ ์ผ๋งํผ ๋์์ผ๋๋์ง ๋ฐ๋ฃจ ๋์ค๋ ๊ฑฐ์์ด!
๊ฒฐ๊ตญ ์๋ฟ๊ฒ ์๋ฒฝํ ํํธ๋ฐ์ค๋ฅผ ๊ตฌํํ ์ ์๊ฒ ๋์๋ค. ์ ์๊ณตํ๊ณผ์ ๋ค์ด์จ ๊ฑธ ์ฒ์์ผ๋ก ๋ฟ๋ฏํ๊ฒ ๋๋ ์๊ฐ์ด์์ด ใ ์ ํ๋์ํ ์ฌ๋ํด์
์ํผ ๋๊ตฐ๊ฐ ๋์ค์ ํธ๋ ์ด์ค๋ฅผ ํ๊ฒ ๋๋ฉด, ๋ฐฉํฅ๋ฟ๋ง ์๋๋ผ ์ขํ๊ณ๋ฅผ ๊ณ ๋ คํด์ผ ํ๋ค๋ ๊ฑธ ๊ผญ ์์์ผ๋ฉด ํด์ ใ
์ ๋๋จ์
์ ํด๊ฒฐํ๋ค. ๋๋ ์๋ฒ๋ฆฌ์์ ๋ฌด๊ธฐ ์ถฉ๋ ๊ถค์ ์ด ์ด๋ป๊ฒ ๊ทธ๋ ค์ง๋์ง ๋ด์ ์ฒ์๋ถํฐ ๋์ด ์ต์ข ์ ์ผ๋ก ๊ตฌํํ ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํํ ์๊ฐ์ ํ์์.
์ ๋ํฐ์์ ์ ๋๋ฉ์ด์ ํด๋ฆฝ์ ์ํ๋ ํ๋ ์๋ง๋ค ์ถฉ๋์ฒดํฌ ์ด๋ฒคํธ ํธ์ถ์ ํด์ฃผ๋ ์ด์๊ฒ ๋์ค๋๋ผ
https://answers.unrealengine.com/questions/330253/system-design-hit-detection.html
์์ฐ์ค๋ฌ์ด ํ๊ฒฉ์ด ์ด๋ป๊ฒ ์ด๋ฃจ์ด ์ง๋์ง ๊ถ๊ธํ๋๋ฐ... ์๋ง๋ ๋ฏ...
์ ๊ฐ์ถ์ผ
์ฑ๊ณต์ถ
์ ๋ง ์กด๊ฒฝ์ค๋ฝ์ต๋๋ค