[UE4] 보호소 사람들 AI로직

후이재·2020년 8월 22일
1
post-thumbnail

🦆 어떻게 할거야?

보호소에 등장할 사람을 추려보자면

1. 보호소 주인(1명)

  • 손님 데려와서 구경시켜주기
  • 손님이 강아지 고르면 가서 문 열어주고 데려오기

2. 손님(2명)

  • 강아지 순서대로 구경
  • 충분히 살펴본 후 선택

3. 어린 손님(손님 2와 같이)

  • 뛰어다니며 구경
  • 앞에 지나갈 때 컹! 하면 앞으로 다가오게
  • 몇번의 타이밍 게임 성공시 선택, 입양

4. 수의사(1명)

  • 강아지 순서대로 살펴본 후 선택
  • 데려감
  • 보리(플레이어) 선택시

이 인물을을 어떻게 배치할 것이냐!

스폰 순서

손님1 ▶︎ 수의사 ▶︎ 손님2+어린손님(딸) ▶︎ 수의사 ▶︎ 종료

🐱 손님먼저 구현하자

손님 구현한 방법

  • 철장 앞마다 TargetPoint생성
  • Behaviot Tree를 이용하여 TargetPoint로 이동, wait하는 로직 구현
  • 철장을 쳐다봐야 하기 때문에 turn 이라는 BTT도 추가하였음
  • 총 6개의 TargetPoint를 한번 주욱 본 후, 다시 돌아오면서 한번씩 더 보도록 설계
  • 모두 두러본 후, 랜덤으로 배열에 있는 TargetPoint중 하나 선택
  • 해당 지점으로 이동했다가 문 밖으로 나가기

🐹 그 다음은 주인

주인은 손님과 비슷한 점이 많아 코드 공유를 위해 Child BluePrint로 생성했음

주인 구현 방법

  • 창고 안으로 들어와, 지정된 Target Point에 서있기
  • 손님이 다 둘러본 후 랜덤의 숫자를 정한 순간, 같이 따라가서 문 열어주기
  • 위와 같은 로직의 구현을 위해 AI, BT를 새로 작성
  • 문을 열어 주는 task에서는 AI_Owner의 변수를 조정하여, Animation Blueprint에서 값을 잡아 무언가를 들고있는 애니메이션을 재생하도록 함
  • 유레카! transition에서 재생중인 애니메이션이 끝나려면 얼마나 남았는지 알 수 있는 노드가 있더라
  • 위의 Time Remaining함수를 사용하면 남은 시간을 알 수 있다. 0이면 다 끝난것이니, Transition이 되도록 했음.
    이 부분은 Tutorial에서 잘 몰라서 적용하지 못했는데 이걸 쓰면 딱이겠다.
    점점 아는 함수가 많아져서 구현이 빨리 진행된다.

친절히 문을 열어주시는 머머리아저씨(손님, 주인 같은 mesh로 진행중이었음)

🐮 그 다음은 다음 포스트로

🦊 이제 뭘 해야하지?

  • 여자아이 손님 AI설계
  • 게임요소 설계
profile
공부를 위한 벨로그

0개의 댓글