UE4 Chapter 5-3. 보스 AI : 보스 스킬 애니메이션 작업

Date:     Updated:

카테고리:

태그:

인프런에 있는 황대희님의 언리얼 엔진4 3D 횡스크롤 게임 만들기 강의를 듣고 정리한 필기입니다. 😀
언리얼 엔진 공식 문서 https://docs.unrealengine.com/ko/index.html

보스 스킬 애니메이션

  • 스킬 발동 조건
    • 보스가 플레이어를 쫓다가 사정 거리내에 들어왔을 때를 기점으로 10초가 지나면 스킬 발동
    • 상태가 AttackChar가 되기 직전부터 스킬 발동 타임을 카운트.
      • SkillTime 이라는 float 변수 추가

스킬 공격 상태 추가

image

스킬 공격 상태인 Skill1AttackChar 상태를 추가해 주었다.


스킬 공격 노드들 추가

🚩 “Boss1MonsterBP” 블루프린트 이벤트 그래프

image

image

  • SkillTime이 10 이상이면 상태는 SkillAttackCHar 스킬 공격 상태가 된다.
    • 보스의 스킬 준비 애니메이션인 “mutant_flexing_Mucles_Montage” 애님 몽타주를 재생한다.
    • 애니메이션 재생 시간동안 지연시간을 가진 후
      • Play Anim Montage 노드는 해당 몽타주의 재생 길이를 초단위로 리턴한다. Delay 노드에서 이를 Input으로 받아 몽타주 재생 시간 동안 기다리게 해주면 된다!
    • 보스의 스킬 공격 애니메이션인 “mutant_swiping_Montage” 애님 몽타주를 재생한다.
    • IsAttacking을 True 로 설정한다.
  • SkillTime이 10 미만이면 상태는 AttackCHar 일반 공격 상태가 된다.
    • 보스의 일반 공격 애니메이션인 “mutant_punch_Montage” 애님 몽타주를 재생한다.
    • IsAttacking을 True 로 설정한다.

🚩 “mutant_flexing_Mucles_Montage” 애님 몽타주 (스킬 준비 애니메이션)

image

스킬 준비 애니메이션이 너무 길어서 Start, End 섹션을 만들고 이 부분만 재생하게 하려고 한다. 대략 이 구간은 2 초다.

🚩 “Boss1MonsterBP” 블루프린트 이벤트 그래프

image

Play Anim Montage 노드의 Start Section Name을 Start로 바꿔서 방금 추가했던 섹션인 Start부터 재생하게끔 한다. 또한 지연 시간은 몽타주 재생 시간동안 가지는 것이 아닌 2 초동안 지연 시간을 가지도록 수정했다.

🚩 “mutant_swiping_Montage” 애님 몽타주 (스킬 공격 애니메이션)

image

스킬 공격 애니메이션이 끝나갈 즈음에 OnAnimEnd_Attack 노티파이를 발생시켜 주어야, 스킬 공격이 끝난 후 플레이어를 쫓아 갈지 아니면 이어서 공격 애니메이션 몽타주를 다시 반복해서 재생할지 결정할 수 있게 된다. 이 노티파이의 발생은 “Boss1MonsterAnimBP” 애니메이션 블루프린트에서 감지하고 “Boss1MonsterBP” 블루프린트에서 이어 받을 수 있도록 동명의 커스텀 이벤트를 발생시킨다. 이전에 몬스터 블루프린트로부터 복사해서 OnAnimEnd_Attack 노티파이를 감지하는 부분은 Boss1MonsterAnimBP” 애니메이션 블루프린트안에 구현되어 있는 상태다.

🚩 “Boss1MonsterBP” 블루프린트 이벤트 그래프

스킬 공격 애니메이션이 끝나갈 즈음에 OnAnimEnd_Attack 이벤트가 발생한다면, 플레이어를 쫓아 갈지 아니면 이어서 공격 애니메이션 몽타주를 다시 반복해서 재생할지 결정해야 하는데, 이 때 다시 반복해서 공격을 한다면 스킬 공격을 할지 일반 공격을 할지 또 선택해야 한다.

image

우선 첫 공격을 실행하는 과정을 StartAttack이라는 커스텀 이벤트를 만들어서 따로 빼두었다.

image

image

image

image

이렇게! 일단 깔끔하게 만들었다. 공격 애니메이션이 끝날 때 (OnAnimEnd_Attack) 이제 일반 공격을 할지 스킬 공격을 할지의 분기점을 이렇게 연결해 줘서 해결이 되었다. Start Attack 호출


스킬 시작 타임

image

  • 이벤트 발동시키고 또 이벤트를 호출하게 하면 무한 반복 할 수 있다.
  • 커스텀 이벤트 SkillTimeLoop 발동
  • 1 초 기다린 후
  • SkillTime 변수 값을 1 증가시킨 값으로 세팅한다.
    • 1 초 기다린 후 1 씩 증가시키니 시간을 초단위로 카운팅해 덮어씌우는 것과 같다.
  • 다시 SkillTimeLoop 이벤트를 호출시켜 무한 반복한다.

image

  • SkillTimeLoop 이벤트 호출
    • Idle 👉 FollowChar 상태로 바뀔 때 SkillTime 카운팅을 시작한다.

image

  • 스킬 공격을 시작하면 다시 SkillTime 값을 0 으로 만들어준다.


🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

UE4 Lesson 1 카테고리 내 다른 글 보러가기

댓글 남기기