1. ํน์ ์์น์ ์์ฑํ๊ธฐ
์คํฐ ํฌ์ธํธ๊ฐ ๋ ๋ธ๋ฃจํ๋ฆฐํธ ํด๋์ค ์กํฐ๋ฅผ ์์ฑํ๊ณ , ๋งต ๋ด ์กํฐ๊ฐ ์์ฑ๋ ์์น์ ๋ฐฐ์นํ๋ค.
์ด์ ์คํฐ ํฌ์ธํธ๋ค์ ๊ฐ์ ธ์ ๊ทธ ์์น์ ์กํฐ๊ฐ ์์ฑ๋๋๋ก ํ ๊ฒ์ด๋ค. ๋จผ์ ๊ฒ์ ๋ชจ๋ ๋ธ๋ฃจํ๋ฆฐํธ๋ฅผ ์ด์ด ์ด๋ฒคํธ ๊ทธ๋ํ์ ์์ดํ ์์ฑ์ ์ํ ํจ์๋ฅผ ์ถ๊ฐํ๋ค.
๊ฒ์ ๋ชจ๋ ๋ธ๋ฃจํ๋ฆฐํธ์ธ ์ด์ ๋ ๋ชจ๋ ๋ ๋ฒจ์์ ์ฌ์ฉ๋ ์ ์๋๋ก ํ๊ธฐ ์ํจ์ด๋ค. ๋ ๋ฒจ๋ง๋ค ๋ค๋ฅธ ์คํฐ์ ์ฌ์ฉํ ๊ฒ์ด๋ผ๋ฉด ๋ ๋ฒจ ๋ธ๋ฃจํ๋ฆฐํธ์ ์์ ํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
Get All Actors Of Class With Tag ๋ ธ๋๋ฅผ ํตํด ์คํฐ ํฌ์ธํธ๋ค์ ๊ฐ์ ธ์ ๋ณ์์ ์ ์ฅํ๋ค. ์ฌ๊ธฐ์ Tag๋ฅผ ํตํด ์์ดํ ์ข ๋ฅ ๋ฑ ํน์ง์ ๋ฐ๋ผ ๋ค๋ฅด๊ฒ ์์ฑ๋๋๋ก ํ์ฉํ ์ ์๋ค.
์์ฑํ๊ณ ์ถ์ ์๋งํผ Loop๋ฅผ ๋๋ฉฐ Transform์ ๋ฐ์์ ๊ทธ ๊ฐ์ผ๋ก ์์ดํ ์กํฐ๋ฅผ ์์ฑํ๋ค.
- Collision Handling Override
- Always Spawn, Ignore Collisions: ์กํฐ๊ฐ ๋ค๋ฅธ ์ค๋ธ์ ํธ์ ์ถฉ๋ํด๋ ์ง์ ๋ ์์น์ ์์ฑํ๋ค
- Try To Adjust Location, But Always Spawn: ์ถฉ๋์ ํผํ๊ธฐ ์ํด ์กํฐ์ ์์น๋ฅผ ์กฐ์ ํ๋ ค๊ณ ์๋ํ๋ค. ๋ง์ฝ ์ถฉ๋์ ํผํ ์ ์๋ ์์น๋ฅผ ์ฐพ์ง ๋ชปํ๋ค๋ฉด, ์ถฉ๋์ ๋ฌด์ํ๊ณ ์ง์ ๋ ์์น์ ์กํฐ๋ฅผ ์์ฑํ๋ค.
- Try To Adjust Location, Don't Spawn If Still Colliding: ์ถฉ๋์ ํผํ๊ธฐ ์ํด ์กํฐ์ ์์น๋ฅผ ์กฐ์ ํ๋ ค๊ณ ์๋ํ๋ค. ์ฌ์ ํ ์ถฉ๋์ด ๋ฐ์ํ๋ค๋ฉด, ์กํฐ๋ฅผ ์์ฑํ์ง ์๋๋ค.
- Do Not Spawn: ์ง์ ๋ ์์น์์ ์ถฉ๋์ด ๋ฐ์ํ๋ฉด ์กํฐ๋ฅผ ์์ฑํ์ง ์๋๋ค.
Get Transform on Item Spawn Points ํจ์๋ ๋ค์๊ณผ ๊ฐ๋ค. ์ด์ ์ ์ ์ฅํ ์คํฐ ํฌ์ธํธ์์ ๋๋คํ ํ๋์ ๊ฐ์ ๋ฐ์์ Transform์ ์ ์ฅํ๊ณ ์ค๋ณต๋ ์์น๊ฐ ๋์ง ์๋๋ก ๊ทธ ๊ฐ์ ์ ๊ฑฐํ๋ค.
์ด์ ์ด ํจ์๋ฅผ ํธ์ถํ๋ฉด ์คํฐ ํฌ์ธํธ๋ค์ ์กํฐ๊ฐ ์์ฑ๋ ๊ฒ์ด๋ค.
2. Nav ๋ด ๋๋ค ์์น์ ์์ฑํ๊ธฐ
์คํฐ ํฌ์ธํธ๊ฐ ๋ ๋ธ๋ฃจํ๋ฆฐํธ ํด๋์ค ์กํฐ๋ฅผ ์์ฑํ๋ค. ๊ทธ๋ฆฌ๊ณ ์์ฑํ ์คํฐ ํฌ์ธํธ ์กํฐ์ ์ด๋ฒคํธ ๊ทธ๋ํ๋ฅผ ์ด์ด BeginPlay์์ Spawn Actor From Class ๋ ธ๋๋ฅผ ์ฐ๊ฒฐํ๊ณ ํด๋์ค์ ์์ฑํ ์กํฐ๋ฅผ ๋ฃ๋๋ค.
Spawn Transform์ ์ฐํด๋ฆญํ ํ Split Struct Pin์ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ด Transform์ด ๋ถ๋ฆฌ๋๋ค. ์ฌ๊ธฐ์ Location์ GetRandomReachablePointInRadius ๋ ธ๋์ ์ฐ๊ฒฐํ๋ค. ์ด ๋ ธ๋๋ origin์์ Radius ๋ด ๋๋ฌํ ์ ์๋ ๋๋คํ ์์น๋ฅผ ์ค๋ค.
์ด๋ ๊ฒ ๊ตฌํํ ์คํฐ ํฌ์ธํธ ์กํฐ์ NavMeshBoundsVolume๋ฅผ ๋ฐฐ์นํ๋ฉด, ๋๋คํ ์์น์ ์กํฐ๊ฐ ์์ฑ๋ ๊ฒ์ด๋ค.