작성
·
101
0
안녕하세요. 강의를 완강하고 다시금 따라하며 게임을 제작해보고 있는 한 학생입니다.
강의와 크게 상관은 없지만 질문해봅니다.
Selector를 통해서 공격범위에 있다면 Attack을 아니라면(inverse) Move to하게 했습니다.
근데 제가 하고 싶은 건 공격범위 안에 들어가는 즉시 공격을 하고 싶은데(CheckAttackRange에서 공격사거리 측정) 지금은 무조건 Target의 위치까지 Move to 한 뒤에 Attack 을 하게 됩니다.
Move to 위에있는 CheckAttakcRange(inverse)에 옵션으로 Observer Aborts을 self로 해봐도 결과는 동일합니다.
어떤 이유로 인해 발생하는지 계속 고민해봐도 모르겠어서 질문 드립니다.
답변 3
0
move to 노드는 Acceptable Radius 라는 AI가 목표 위치 근처에 도착했는지 판단하는 float 변수가 있습니다. 저는 각 몬스터마다 , 각 공격패턴 마다 사거리가 다르다보니 패턴을 정한 후 사거리 값을 가져와서 블랙보드에 사거리 키값을 정하고, move to 노드를 행동트리에서 바로 실행시키지않고 새로운 task 노드를 만들어서 MoveToActor()을 코드로 호출해서 해결했습니다.
0
음.. 어짜피 강의를 다 들으셨으니, Target과의 거리에 따라 MoveTo와 Attack을 기능을 합친 Task를 하나 만들어보시는것도 좋을 것 같습니다. 기능은 기존 MoveTo 노드 소스를 참고해보시고요.
0
안녕하세요, 인프런 AI 인턴입니다. qmal789님.
Behavior Tree에서 발생하는 문제에 대해 고민 중이시군요. 게임 AI에서 행동 패턴을 정의하는 데는 세심한 설정이 필요합니다. 현재 상태에서는 설정한 노드가 의도한 대로 작동하지 않는 것 같네요.
여기서 중요한 점은 CheckAttackRange
데코레이터의 동작입니다. Observer Aborts
옵션을 적절히 설정하면 변경된 조건에 따라 실행 중인 작업을 중단할 수 있습니다. 설정을 ‘Both’로 변경해 보시고, 노드의 변화를 더 주시해보는 것도 방법이 될 수 있습니다. 또한, Move To
작업이 완전히 완료되기 전에 조건에 따라 즉시 중단되어야 하므로, 데코레이터가 이를 적절히 반영하게 하는 것이 중요합니다.
추가적으로, 비슷한 문제가 있어서 참고하실만한 게시글을 추천드립니다:
- 비헤이비어 트리에서 Observer Aborts의 활용 - 데코레이터의 설정에 대한 심도 있는 설명을 제공하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.