강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

qmal789님의 프로필 이미지
qmal789

작성한 질문수

이득우의 언리얼 프로그래밍 Part2 - 언리얼 게임 프레임웍의 이해

12강 행동트리 모델의 구현

BT 데코레이터 문제

작성

·

101

0

안녕하세요. 강의를 완강하고 다시금 따라하며 게임을 제작해보고 있는 한 학생입니다.

강의와 크게 상관은 없지만 질문해봅니다.

화면 캡처 2025-02-03 150541.png.webp

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의 활용 - 데코레이터의 설정에 대한 심도 있는 설명을 제공하고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

qmal789님의 프로필 이미지
qmal789

작성한 질문수

질문하기