Behavior Tree를 이용해 적의 AI를 구현했다.
대략적인 기능은 조건에 따라 3가지 상태중 하나를 선택한다.
player가 보이는가?
player가 보이면 player까지 일정거리 다가가고 Shoot 과 wait를 loop돈다.
1번 조건을 충족 못했을때 player가 마지막 보였던 장소로 가고 player가 마지막 보였던 장소를 담아뒀더 blackboard value를 비워준다.
5초동안 기다렸다가 player last seen 변수를 비워줬기때문에 다음 sequence로 넘어간다.
startLocation으로 돌아간다.
수도코드로 써보면 아래와 같다
if playerSeen:
while(playerSeen):
if player와 거리가 가까움:
총을 쏜다
else:
player 가까이 다가간다
elif playerLastSeen:
playerLastSeen으로 간다
clear playerLastSeen value
5초동안 기다린다
else:
초기위치로 돌아간다
굉장히 편리하고 강력하고 기능이였다