해결된 질문
작성
·
83
·
수정됨
0
해당 강의를 전부 수강 후, 보스와 일대일 전투를 진행할 때
보스가 공격중이거나, 공격이 끝났을 때 유저가 어떤 액션을 취하느냐에 따라
가중치를 적립해서 2페이즈로 분기하는 토이 프로젝트를 해보려고 합니다
그런데 진행중에 어떻게 처리해야할지 막히는 부분이 있어서 질문 드리고 싶습니다!
대략적인 방향성은 다음과 같아요!
WeaponCollision AnimState가 시작할 때와 끝날 때 보스의 BlackBoard Key값 변경
현재 대치중인 보스의 BlackBoard Key값을 가져와서, Key값에 따라 조건 결정
(ex. 보스의 BlackBoard Key 값이 Melee Attack일 때, 캐릭터가 공격을 실행하면 공격 변수에 가중치 + 1)
체력이 50퍼센트 이하일 때, 현재까지 적립된 가중치 변수들을 전부 비교하여, 최대값 선별
선별된 최대값을 BlackBoard에 가져와서, 분기 조건으로 사용
위와 같은 방향성으로 진행해보려고 하는데, 가중치 변수들은 EnemyBoss.h폴더에 저장해놓았고,
Character.cpp의 Attack / Block 함수들 사이에
대치중인 EnemyBoss의 BlackBoard Key값을 가져와서, if문으로 조건을 걸고 가중치를 줄지 말지 결정하고 싶은데 어떻게 진행해야할지 조금 막막해요
어떻게 진행하면 좋을지 힌트를 얻고싶습니다
답변 2
3
안녕하세요, 언리얼뉴비님.
보스 캐릭터를 감지하는 방법은
공격이 성공했을 때는 무기의 OnHitActor 함수에서 피격된 대상의 Actor 정보를 확인할 수 있습니다.
만약 공격과 관계없이 감지해야 한다면, 별도의 SphereComponent를 활용한 감지 시스템을 구현하는 방법을 고려해볼 수 있을 것 같습니다.
그럼 좋은 하루 되시길 바랍니다^^
0
안녕하세요, 인프런 AI 인턴입니다. 언리얼뉴비님.
보스와의 전투에서 전술적인 플레이를 추가하기 위해 다양한 가중치를 적용하려 하고 계신 것 같습니다. 이러한 시스템을 구축하는 데는 여러 가지 요소가 결합되어야 하므로, 단계적으로 접근하는 것이 좋습니다.
아래는 제안 드리는 접근 방식입니다:
보스의 AnimState와 BlackBoard 연동:
대치 중인 보스의 상태 관리:
Perception System
을 사용하여 보스가 플레이어를 감지하도록 구현하고, 감지 시 이벤트를 발생시켜 BlackBoard에 정보를 갱신합니다.가중치에 의한 행동 결정:
TMap
또는 TArray
를 활용해 가중치를 누적하고 비교하세요. 플레이어의 행동에 따라 가중치를 업데이트하고, 이러한 값을 기반으로 행동을 결정하도록 합니다. AI Controller에서 BlackBoard Key를 활용하여 선택 분기를 강화할 수 있습니다.체력 조건에 따른 페이즈 전환:
Behavior Tree
에서 Decorators
를 사용하여 페이즈 전환 조건으로 활용합니다.이상과 같은 접근 방법으로, 언리얼 엔진 내에서 다양한 게임 플레이 경험을 유동적으로 구현할 수 있을 것입니다.
추가로 유사한 구현이나 AI와 관련한 질문들은 아래 링크를 확인하시면 도움이 될 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
답변 감사합니다
플레이어의 공격 적중 성공 여부에 관계 없이,
보스 캐릭터가 공격중인지 아닌지에 따라 가중치를 적립하려면
말씀하신 SphereComponent를 써야하나요?