2024.06.10
깃허브! | 풀리퀘! |
---|---|
★ https://github.com/ChangJin-Lee/SimpleShooter | ★ https://github.com/ChangJin-Lee/SimpleShooter/pull/2 |
적 캐릭터가 무기를 들고 있지 않던 문제를 해결했다.문제의 원인은 블루프린트에서 On Changed 함수 노드를 사용하지 않아서였다.
들어가기에 앞서 이번 주의 개발 계획이다.
무기를 들고 있지 않는 적 모습 |
원인은 무엇이고 왜 이런 현상이 발생했던 것일까?
우선 AI에 대한 처리를 하기전에 내가 구현해놓은 플레이어의 무기 관련 블루프린트를 살펴보았다.
Overlay에 변화가 생겼을 때 적용시켜주는 구조 |
UFUNCTION(BlueprintImplementableEvent, Category = "OverLay Slot")
void DrawAIWeapon();
UFUNCTION(BlueprintImplementableEvent, Category = "OverLay Slot")
void PutDownAIWeapon();
if(AIController->LineOfSightTo(PlayerPawn))
{
ShooterCharacter->ToggleIsArmed();
ShooterCharacter->DrawAIWeapon();
AIController->GetBlackboardComponent()->SetValueAsObject(GetSelectedBlackboardKey(), PlayerPawn);
}
else
{
ShooterCharacter->ToggleIsArmed();
ShooterCharacter->PutDownAIWeapon();
AIController->GetBlackboardComponent()->ClearValue(GetSelectedBlackboardKey());
}
수정 전 Base_Character 블루프린트 |
바로 이 블루프린트 부분이 문제였다.
잘 살펴보면 Ovelay State를 Set해주고 단순히 OverLay 변수를 적용시키고 있다. 즉, 플레이어에서 만들었던 것처럼 On Overlay State Changed를 만들어서 Overlay State가 바뀔때 어떤 함수를 실행하도록 만들어 주어야한다.
수정 후 Base_Character 블루프린트 |
이제 다음처럼 정상적으로 적 캐릭터가 무기를 소지하고 있다.
하지만 아직 무기를 조준하는 기능이 구현되어 있지 않다. 다음 개발 계획으로 넣어두어야겠다.
수정 후 Base_Character 블루프린트 |