BB프로젝트 7일차

김재혁·2025년 2월 26일

일정

  • 에셋 추가 (맵 에셋 / AI 에셋)
  • 애니매이션 생성 ( 걷기 / 공격)
  • 피격 로직 추가(KnockBack)

에셋 추가

  • 맵 에셋 추가(Subway Station)
    -> Subway는 추후 추가
  • 기본 애니매이션과 호환되는 Monster 에셋 (Zombie) 적용

애니매이션 생성


-> AttackMontage 연결

- AI Anim 기본 동작 실행 영상

  • 추후 추가 작업 집어넣을 예정(넉백 / 공격 모션 추가 / 사망 )

피격 로직 추가 (KnockBack)

  • Player가 공격을 하면 몬스터가 넉백을 하는 걸 만드는 목표.
    1) TaskNode로 KnockBack 코드를 작성
    2) NonPlayCharacter에 KnockBack에 관련된 코드를 작성
    -> 공격때와 마찬가지로 AnimMontage를 이용해서 과정을 처리할 계획.
    3) BT를 작성
    -> IsHit bool값을 BB에 만들어서 맞을 때와 맞지 않았을 때를 가르기.
    적용해보니 이런 오류가 뜬다..
    그래서 오류대로 적용을 해봤는데 공격을 하고 눕기는 하나 이동을 안한다...
RootComp->AddImpulse(KnockbackImpulse, NAME_None, true);

->이게 문제였던것 같음

  • 물리 시뮬레이션을 RootComp가 활성화 하지 않아서.. 그래서 적용을 하고 실행을 해봤더니 오류 메세지는 뜨지 않았으나 몬스터가 나뒹굼
LaunchCharacter(KnockbackImpulse, false, false);

ACharacter 클래스는 물리 기반이 아니라 CharacterMovementComponent로 움직임을 처리 하기에
물리 시뮬레이션을 사용하지 않는 LaunchCharacter()를 사용해, 내부적으로 캐릭터의 이동 속도를 직접 변경해서 넉백을 구현하는 방식으로 수정.
-> 정상적으로 작동은 하나 Montage를 적용하니 디버그가 걸림.

  • 오류 메세지를 확인하니 OnKnockBackMontageEnded 함수가 델리게이트에 바인딩되지 못하는 문제
    에러 로그에 "function might not be marked as a UFUNCTION" 라고 나옴
    -> UFUNCTION 매크로를 확인하고, 델리게이트 바인딩 방식을 수정해야 한다고 함.
UFUNCTION()
void OnKnockBackMontageEnded(UAnimMontage* Montage, bool bInterrupted);

-> UFUNCTION()으로 감싸줬음. 델리게이트에 바인딩할 수 없어서 발생하는 오류를 해결하기 위함.

드디어 정상 작동...

내일은 사망 모션 구현. 에셋추가 생각을 해서 몬스터 다양화를 계획.

0개의 댓글