UE4 Chapter 5-2. 보스 AI : 보스 충돌체 작업

Date:     Updated:

카테고리:

태그:

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

🔔 Collision 달기

왼쪽 갈고리에 달기

갈고리는 스킬 공격

  • 보스의 Mesh의 자식으로 Capusle Collision 컴포넌트 추가. 이름은 “Capsule”
    • 부모 소켓 👉 Left Hand
      • 갈고리는 왼쪽 팔에 있다.
      • 이제 왼쪽 팔에 붙어 같이 애니메이션 된다.
    • 애니메이션 잠시 동안만 끄고 갈고리 Mesh에 딱 맞게 트랜스폼 조정해주기.

왼쪽 주먹에 달기

주먹은 일반 공격

  • 보스의 Mesh의 자식으로 Sphere Collision 컴포넌트 추가. 이름은 “Sphere”
    • 부모 소켓 👉 Right Hand
      • 주먹은 오른 팔에 있다.
      • 이제 오른쪽 팔에 붙어 같이 애니메이션 된다.
    • 애니메이션 잠시 동안만 끄고 주먹 Mesh에 딱 맞게 트랜스폼 조정해주기.

image

Sphere의 Collision 정보. 공격할 때만 충돌 처리가 활성화 될 수 있도록 Custom으로 바꾼 후, Collision Enabled은 No Collision으로 해둔다. 공격할 때만 활성화 시킬 것이다.

image

이렇게 두 Collision을 달았다.


🔔 충돌 처리

보스 충돌체로 블루프린트 설정 변경

보스의 기본 공격은 Sphere 충돌체로 이루어질 것이기 때문에 몬스터 블루프린트로부터 복사해온 Capsule 부분을 대부분 Sphere로 변경해주었다. Capsule은 스킬 공격으로 쓸 것이다.

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

image

“DefaultMonsterBP” 몬스터 블루프린트를 복사해와 만든 블루프린트이다 보니, Capsule에 충돌이 일어나면 데미지를 입히는 처리밖에 없어서, 보스만의 새로운 충돌체인 Sphere에 충돌이 일어나면 데미지를 입히는 처리를 할 수 있도록 추가해주었다.

image

보스는 몬스터보다 무기가 좀 짦아서, 플레이어와의 거리가 130 이하일 때 공격하고, 공격 상태이다가 플레이어와의 거리가 150 이상일 때 다시 쫓아가는 것으로 수치를 조정해주었다.

image

image

image

플레이어, 몬스터와 마찬가지로 보스가 맞을 때마다 Mesh가 빨개질 수 있도록 색상 파라미터(Vector Parameter를 추가한 뒤, Chanage Color 라고 명명했다.)를 준 Material Instance를 만들어 적용했다. 보스의 Material은 “mutant_M”, 인스턴스는 “mutant_M_Inst”. 마찬가지로 Change Damage Color 이벤트가 발생했을 때 머터리얼을 “mutant_M_Inst”, 0.2 초 뒤에 “mutant_M”로 설정해주어 맞는 순간 마다 빨개지게끔 해주었다.

image

죽으면 Collision을 모두 비활성화 할 때, Sphere도 비활성화되게 노드를 추가해주었다.

image

공격 애니메이션이 시작될 때만 충돌 처리가 활성화 되고, 공격 애니메이션이 끝나갈 땐 충돌 처리가 다시 비활성화 될 수 있도록, 기족에 Capsule로 되어 있던 것을 Sphere로 바꾸었다.


공격 받으면 메인 Mesh에만 데미지가 발생하게끔 : Tag

보스는 Collision이 3개라 (Mesh에 붙어있는 Collision, Capsule, Sphere) 공격을 받으면 이 3 개의 Collision에서 같이 데미지를 입는 처리를 하게 된다. 즉, 데미지가 3 배로 들어가는 것이다. 따라서 이 같은 문제를 해결하기 위해 데미지를 입는 처리는 몸인 Mesh에 붙어있는 Collision 에서만 이루어지도록 할 것이다.

  • 👉 충돌체들에게 Tag를 붙여서 데미지가 발생하는 Tag만 구분되도록 하자.
  • 👉 보스, 몬스터, 플레이어 모두 다 적용.

🚩 “Boss1MonsterBP” 블루프린트 (보스), “DefaultMonsterBP” 블루프린트 (몬스터), “MoveCharBP” 블루프린트 (플레이어)

Mesh에 붙어있는 Collision인 “Capsule Component”에게 Tag로 “Character”를 붙여준다. 보스, 몬스터, 플레이어 이 3 개의 블루프린트에 다 똑같이 적용해준다.

image


🚩 “Boss1MonsterBP” 블루프린트 (보스), “DefaultMonsterBP” 블루프린트 (몬스터), “MoveCharBP” 블루프린트 (플레이어)

image

image

충돌한 대상이 “Character” 태그가 붙은 충돌체일 때만 Apply Damage를 호출할 수 있도록 한다. 보스, 몬스터, 플레이어 이 3 개의 블루프린트에 다 똑같이 적용해준다.

  • Other Comp
    • Collision에 충돌한 대상인 Ohter Actor컴포넌트를 참조한다.
  • Component Tags
    • 입력으로 들어온 컴포넌트의 Tag 들을 배열로 참조한다.
      • Mesh 컴포넌트의 Tag를 get 한다
    • 해당 컴포넌트의 Tag들을 담은 배열이다.
  • Get
    • 노드안에서 인덱스를 입력하면, 입력 배열의 해당 인덱스의 원소를 리턴해준다.
    • 태그는 “Character” 하나 지정했으므로 인덱스 0 으로 해주면 “Character” 태그가 리턴될 것이다.
  • 충돌 감지된 액터의 컴포넌트의 첫번째 태그가 “Character”일 때만 Apply Damage 그 액터에게 데미지를 입힌다.


죽으면 지연 시간을 가진 후 시체가 사라지게 하기

image

image

죽은 후에 5 초간에 지연 시간을 가지고 자기 자신을 파괴할 수 있도록 노드를 추가한다. 보스, 몬스터, 이 2 개의 블루프린트에 다 똑같이 적용해준다.



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

맨 위로 이동하기

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

댓글 남기기