๐ค Behavior Tree๋ฅผ ์ฌ์ฉํด์ ์ง์ AI๋ฅผ ๊ตฌํํด๋ณด์.
์ด๋ฒ ํฌ์คํ ์์๋ AI์๊ฒ ๋ฌด๊ธฐ๋ฅผ ์ฅ์ฐฉํ๋ ๋ฐฉ๋ฒ์ ์์ ๋ณด๊ฒ ์ต๋๋ค.
์ค๋ช
์ ํธ์๋ฅผ ์ํด์
ํ๋ํธ๋ฆฌ (Behavior Tree)๋ ์์ผ๋ก BT๋ก,
๋ธ๋๋ณด๋ (Black Board)๋ ์์ผ๋ก BB๋ก,
AI Controller๋ AIC๋ผ๊ณ ๋ถ๋ฅผ ์์ ์
๋๋ค.
Ali Elzoheiry๋์ Smart AI ๊ฐ์ ์์์ ๋ณด๋ฉด์ ๊ณต๋ถํ์์ต๋๋ค.
์๋ฆฌ์ฆ์ ์์ด ๋ง์ง๋ง ์ ๋ฆฌ๊ฐ ์์ฃผ ์ ๋์ด ์์ผ๋ ํ๋ฒ์ฉ ์์ฒญ์ ์ถ์ฒ๋๋ฆฝ๋๋ค.
์ ๋นํ ์นผ ์์
์ ์ถ๊ฐํ ๋ค์ BP_Sword๋ฅผ ์ถ๊ฐํด์ฃผ์์ต๋๋ค.
๋ฌด๊ธฐ ์ฅ์ฐฉ์ ์ด์ ์ ํ๋ ์ด์ด์๊ฒ ์ด์ ์ถ๊ฐํ ๊ฒ๊ณผ ๋์ผํฉ๋๋ค.
์ค๋ฅธ์์ Sword๋ผ๋ ์์ผ์ ์ถ๊ฐํ ๋ค์ Sword๋ฅผ Preview Asset์ผ๋ก ๋ฃ์ด์ ์์น๋ฅผ ์ก์์ฃผ์ธ์.
BP_Enemy๋ก ์ด๋ํ๊ฒ ์ต๋๋ค.
Custom Event๋ฅผ ํ๋ ์์ฑํด์ฃผ์ธ์.
Equip Sword๋ผ๊ณ ์ด๋ฆ ์ง์ด ์ฃผ๊ฒ ์ต๋๋ค.
์ ๊ทธ๋ฆฌ๊ณ SpwanActorFromClass๋ฅผ ๊ฒ์ํด์ ๋
ธ๋๋ฅผ ์ถ๊ฐํด์ฃผ์ธ์.
์ด ๋
ธ๋๋ฅผ ์ปค์คํ
์ด๋ฒคํธ์ ์ฐ๊ฒฐํด์ฃผ์ธ์.
๊ทธ๋ฆฌ๊ณ Class๋ ์ฐ๋ฆฌ๊ฐ ์์ฑํ BP_Sword๋ก ๋ณ๊ฒฝํด์ฃผ์ธ์.
Spawn Transform์๋ Get Actor Transform์ self๋ก ๋ฃ์ด์ฃผ์ธ์.
์ฌ๊ธฐ๊น์ง๊ฐ BP_Sword๋ผ๋ ์กํฐ๋ฅผ ์์ฑํ๋ ๋ก์ง์
๋๋ค.
์ด์ BP_Sword๋ฅผ ํ๋ ์ด์ด์ ์ค๋ฅธ์์ ์ฅ์ฐฉํด์ฃผ๊ฒ ์ต๋๋ค.
์ด๋ Attach Actor To Component๋ผ๋ ๋
ธ๋๋ฅผ ์ฌ์ฉํ๊ฒ ์ต๋๋ค.
ํ๋์ฉ ์ค์ ํ๊ฒ ์ต๋๋ค.
์ ๋์ํ๋์ง ๋ณด๊ธฐ ์ํด ์์๋ก Begin Play์์ Equip Sword๋ฅผ ํธ์ถํ๊ฒ ์ต๋๋ค.
โ์ปดํ์ผ ์ ์ฅโํ ํ๋ ์ดํ๊ฒ ์ต๋๋ค.
์ ์ด ์นผ์ ์ ๋ค๊ณ ํ๋๋ฅด๋๊ฑธ ํ์ธํ์ต๋๋ค!
BT๋ก ์ด๋ํ๊ฒ ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ BTT_EquipSword๋ผ๋ ํ์คํฌ๋ฅผ ์๋ก ์์ฑํด์ฃผ๊ฒ ์ต๋๋ค.
์คํ ๋
ธ๋๋ฅผ ๋น์ฐํ๊ฒ ์ถ๊ฐํด์ฃผ์ธ์.
BP_Enemy๋ฅผ Castํ๊ณ EquipSword๋ฅผ ํธ์ถํด์ฃผ๊ฒ ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์๋์ ๊ฐ์ด Equip Sword Task๋ฅผ ์ถ๊ฐํด์ฃผ์ธ์.
ํ์ง๋ง ์ด๋ ์ด๋ฏธ ์นผ์ ์ฅ์ฐฉํ ์ํ์ฌ๋ ๊ณ์ํด์ ์ฅ์ฐฉ์ ๋ฐ๋ณตํ๊ฒ ์ฃ ?
์ด๋ฅผ ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ์์ฑํด์ ์นผ์ ์ฅ์ฐฉํ๋์ง์ ๋ํ ์ฌ๋ถ๋ฅผ ํ๋จํ๊ฒ ์ต๋๋ค.
BP_Enemy์๊ฒ ์ด๋ํด์ isEquipSword๋ณ์๋ฅผ Boolean์ผ๋ก ์์ฑํด์ฃผ๊ฒ ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ Equip Sword ์ปค์คํ
์ด๋ฒคํธ์ ๋ง์ง๋ง์ ๋ณ์๋ฅผ True๋ก Setํด์ฃผ๊ฒ ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ๊ธฐ์กด ์์๋ก ์ฐ๊ฒฐํ๋ Begin Play ํ๋ฆ์ ๋์ด์ฃผ์ธ์.
โ์ปดํ์ผ ์ ์ฅโํด์ฃผ์ธ์.
ํ์คํฌ ์์ฑ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์๋จ์์ ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ์ ํํด์ฃผ์ธ์.
Test๋ฅผ ์ฌ์ฉํ์๋ฉด ์๋ฉ๋๋ค!
๊ทธ๋ฆฌ๊ณ Decorator๋ผ๋ ํด๋๋ฅผ ์์ฑํ๊ณ ๊ทธ ์์ BTD_IsEquipSword๋ก ์์ฑํด์ฃผ๊ฒ ์ต๋๋ค.
๋ฐ์ฝ๋ ์ดํฐ ์์ฑ ์๋ํฐ ์ฐฝ์ด ์ผ์ง๋ฉด ์ข์ธก Function์ ๋ณด๊ฒ ์ต๋๋ค.
๋ง์ฐ์ค๋ฅผ ๋๋ณด๋ฉด Override ๋ฒํผ์ด ๋ํ๋ฉ๋๋ค.
๊ฑฐ๊ธฐ์ Perform Condition Check AI๋ฅผ ์ ํํด์ค๋๋ค.
๊ทธ๋ผ ์กฐ๊ฑด์ ๋ฆฌํดํด์ฃผ๋ ๋
ธ๋๋ค์ด ์๋์ผ๋ก ์์ฑ๋ฉ๋๋ค.
BP_Enemy๋ฅผ Castํด์ Is Equip Sword ๋ณ์๋ฅผ Getํด์ ๋ฆฌํด๊ฐ์ ๋ฃ์ด ์ฃผ๊ฒ ์ต๋๋ค.
โ์ปดํ์ผ ์ ์ฅโํด์ฃผ์ธ์.
Equip Sword ํ์คํฌ ๋
ธ๋๋ฅผ ์ฐํด๋ฆญํด์ฃผ์ธ์.
๊ทธ๋ฆฌ๊ณ ํ๋จ์ Add Decorator๋ฅผ ์ ํ ํ ์ฐ๋ฆฌ๊ฐ ์์ฑํ BTD๋ฅผ ๊ฒ์ํด์ ์ถ๊ฐํด์ฃผ์ธ์.
์ถ๊ฐ๊ฐ ๋๋ฉด ์๋จ์ ํ๋์ ๋
ธ๋๊ฐ ์ถ๊ฐ๋ฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ํ๋์ ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ํด๋ฆญํด์ฃผ์ธ์.
๊ทธ๋ผ ๋ฐ์ฝ๋ ์ดํฐ์ Details๋ฅผ ์์ ํ ์ ์์ต๋๋ค.
IsEquipSword๊ฐ False์ธ ๊ฒฝ์ฐ์๋ง ๋
ธ๋๋ฅผ ์คํํด์ผ ํฉ๋๋ค.
๊ทธ๋ฌ๋ Inverse Condition์ ์ฒดํฌํด์ฃผ์ธ์.
์ ์ฐ๋ฆฌ๋ Sequence๊ฐ ํ๋๋ผ๋ ์คํจํ๋ฉด ์ ์ฒด๊ฐ ์คํจํ๋ค๊ณ ๋ฐฐ์ ์ต๋๋ค.
๋ง์ฝ ์นผ์ ์ด๋ฏธ ์ฐจ๊ณ ์๋ค๋ฉด, ์ดํ์ ๋ชจ๋ ๋ ธ๋๊ฐ ์คํ๋์ง ์์ ๊ฒ๋๋ค.
์ด๋ Equip Sword๋ฅผ ๋ถ๋ฆฌํด์ฃผ์ด์ผ ํ๋ค๋ ๋ป์ด์ฃ .
Selector๋ฅผ ์ถ๊ฐํ์ฌ ์๋ ์ฌ์ง๊ณผ ๊ฐ์ด ๋ถ๋ฆฌํด์ฃผ์ธ์.
๊ทธ๋ฆฌ๊ฑฐ ์คํ ํ ํ๋ฆ์ ์ดํด๋ณด๋ฉด ์ ์์ ์ผ๋ก ๋์ํ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์ด๊ฒ์ผ๋ก ๊ณต๊ฒฉ์ ์ ํ๋ ์ด์ด๋ฅผ ๋ฐ๋ผ๋ณด๊ณ , ํ๋ ์ด์ ์ ํฌ์ปค์ค๊ฐ ํ๋ฆฌ๋๋ก ๊ตฌํํ์์ต๋๋ค.
์ด๊ฒ ์ ์์ ์๋๋ ๊ฐ์์ ๋์ ํ๋ฆ์ ๋ง๊ฒ ์ฌ์ฉํด๋ณด์ธ์.
์๊ฐ๋ณด๋ค ๊ธธ์ด์ง ๊ฒ ๊ฐ์ ์ถ๊ฐ ๊ธฐ๋ฅ์ ๋ค์ ํฌ์คํ ์ ์งํํ๋๋ก ํ๊ฒ ์ต๋๋ค.