🚶🏽♀️구현순서
- Mixamo에서 사람 skeleton mesh 가져옴
- Mixamo에서 AI시나리오에 맞는 animation 가져옴
- State Machine 구성
- Blackboard와 Behavior Tree 작성
- 원하는 기능 추가
✍🏻 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로 하시나 보다
- 자료가 많아서 좋았음
🌚 이제 뭘 해야 하지?
- BP복제.
- 사람마다 특성 다르게 하기(외모, 애니메이션)
- 보스몹 제작
- 보스몹 AI는 따로 만들것임
🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨🐕✨
귀여운 강아지네요