[UE4]행인 AI 애니메이션 만드는 중

후이재·2020년 7월 26일
3
post-thumbnail

🚶🏽‍♀️구현순서

  1. Mixamo에서 사람 skeleton mesh 가져옴
  2. Mixamo에서 AI시나리오에 맞는 animation 가져옴
  3. State Machine 구성
  4. Blackboard와 Behavior Tree 작성
  5. 원하는 기능 추가

✍🏻 AI시나리오

  • 크게 walk - dog reaction - idle 동작 가짐
  • walk -red light => idle
    walk -dog => reaction
  • idle -dog => reaction
    idle -green light => walk
  • reaction -dog go => walk or idle
    를 바탕으로 StateMachine 작성함

🌲 BT작성

필요한 task

  • 시야에 개가 있으면 idle
  • 횡단보도 trigger가 활성화 되어있으면 idle

구현하기 위해

시야 구현: BP에 pawn sensing추가 필요
시야에 개가 있는지?: On See Pawn 이벤트 추가로 들어오면 sensing bool변수를 true로
개가 있으면?: react로 전환
(enum 자료형으로 미리 cur_status를 정의해둠)
개가 가면?: sensing on 이 있다면 off가 있어야 할것 같지만 없다. 위치벡터를 통한 거리 계산을 해서 떨어졌음을 확인, false저장

횡단보도?: box trigger 사용
빨간불?: trigger 작동 시 오버랩 된 객체를 idle로 강제 변경
파란불?: trigger의 collider를 disable(Set Actor Enable Collision 노드 사용)
신호체계?: timmer 이벤트로 제어

를 생각하며 작성했다.

  • Blackboard 키는 go, next, Dog, Location Key를 추가함
  • Blackboard를 활용하면 값의 실시간 확인이 쉬워서 임의로 decorator를 만들지 않았음
  • BTS를 만들어서 계속 변경될 BB key 값을 갱신함
  • Dog 개가 있는지 없는지, Go 가도 되는지 안되는지를 말함

🦜 이미 되어있던것들

  • 쉬운 상태 확인, 변경을 위한 Enum 변수(walk, idle, react)
  • AI세팅(Nav mesh bound, AI BP 등등)
  • target point 설정, 외부 변수로 빼둬서 추가, 삭제 가능. target으로의 자동 이동
  • 다른것은 잘 생각 안니니 넘어가련다

🤔 신경을 썼던 부분

  • 절대 경로를 이탈해서는 안됨
  • 도중에 이해할 수 없는 행동을 해선 안됨(덜덜 거리거나)
  • 원하는 경로에 도착하기 전에 다음 경로로 넘어가서는 안됨
  • 개와 횡단보도에 대한 정확한 반응
  • 개가 보일 때 반응을 보여야 함
  • 변수로 개에 대한 반응 선택 가능하도록(BP 복제과정에서 편하려고 미리 만듦)
  • 블랙하면 핑크

🐿 구현 되는 부분

  • man BP가 원하는 target point를 향해 기특하게도 자동으로 길을 찾아 움직임
  • 개가 시야안에 존재할 때 반응을 보임
  • 정한 경로를 정확히 끝까지 완수함
  • 신호를 잘 지킴

✨ 간단한 감상

  • BT가 처음 배울 때 심각하게 복잡해 보였는데 괜찮아 졌음 역시 모르니까 어려워보이는 것임
  • Composites의 특성을 고려하지 않고 생각없이 하다가 오류를 범했었음. Selector와 Sequence의 차이를 분명히 알게 됨
    [Selector]: 하위 노드 중 하나만 만족하면 됨
    [Sequence]: 하위 노드 왼쪽부터 실행. false면 오른쪽 남은것 실행하지 않음
  • c++로 하시는 분들도 이 부분은 다 BP로 하시나 보다
  • 자료가 많아서 좋았음

🌚 이제 뭘 해야 하지?

  1. BP복제.
  2. 사람마다 특성 다르게 하기(외모, 애니메이션)
  3. 보스몹 제작
  4. 보스몹 AI는 따로 만들것임

🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨

profile
공부를 위한 벨로그

2개의 댓글

comment-user-thumbnail
2020년 7월 26일

귀여운 강아지네요

1개의 답글