Unreal 20

10. 플레이어 피격

DDing_h 2020. 7. 8. 23:45

플레이어 피격에 대해 알아보려한다.

 

준비물 

- 플레이어 사망 몽타주

- 플레이어 피격 몽타주

 

플레이어가 피격효과를 받기 위해서 적군의 콜리전을 설정 해준다. 
적의 Mesh를 부모로 두는 콜리전을 생성한뒤 소켓의 부모

를 공격부위에 설정하여준다. (RightHand)에 설정하였다.

콜리전은 다음과 같이 설정하였다. 오른쪽 팔에 적당한 크기로 설정해준다.

 

전과 같이 해당 콜리전의 OnComponentBeginOverlap이벤트를 호출해주어 임의의 태그를 걸어준다(TAG_PLAYER)

그 뒤 태그가 맞을 경우 데미지를 주는 형식이다. Attackdamage라는 변수를 만들어서 설정하였다.(50)

 

해당 부분은 플레이어 부분이다. 받는 데미지와 플레이어의 HP를 설정해두었다. (HP:100, 데미지:50)

데미지를 입었을 경우 발생하는 함수이며 플레이어의 HP가 0이 되었을 경우 사망모션을 한뒤 플레이어의 컨트롤러가 먹히지 않게 Disable Input라는 함수를 호출하고, 죽는모션이 계속 발생하는것을 막기위해 Do Once를 실행하고, 딜레이를 주어 액터가 사라지게 설정하였다.

또한 죽지않았을경우는 피격효과를 주는 몽타주를 재생하게 하였다.

 

하지만 다음과 같이 설정하면 발생하는 문제가 하나 있는데, 콜리전이 플레이어에게 닿았을때 충돌을 한번만 해주는 것이 아닌, 계속 해주어 공격한번에 플레이어가 사망하는 경우가 생긴다. 그렇기에 해당 문제를 해결하기 위해 Enemy 공격 몽타주를 재설정 해준다.

애니메이션 몽타주의 노티파이 부분이며 해당부분에(적이 공격하는 모션 시작과 끝을 설정해 둔 것) 다음과 같은 노티파이를 설정한다. OnAttackStart와 OnAttackEnd라고 이름 설정 하였다.

 

그 뒤 적군 블루프린트에 커스텀이벤트로 어택시작과 종료라는 커스텀이벤트를 생성하여 어택이 시작할때 콜리전을 켜주고, 어택이 끝날때 콜리전을 꺼주어 만들어준 노티파이 사이에만 콜리전이 발생할 수 있도록 설정하여 준다.

그 뒤 적군 애니메이션 블루프린트에 다음과 같이 설정 한다.

몽타주의 노티파이 이름이였던 OnAttackStart와 OnAttackEnd를 Enemy에 있는 커스텀이벤트에 연결해주기 위해 형변환을 해준뒤 타깃을 연결해주면 된다.

그 뒤 적군의 손에 설정해둔 콜리전을 다음과 같이 시작할시 No Collision으로 설정해두어 처음에 콜리전이 꺼진상태로 플레이 되게 설정하여 준다면 깔끔한 공격이 될 수 있다.

'Unreal 20' 카테고리의 다른 글

9. 적군 피격  (0) 2020.07.08
08. 플레이어 공격  (0) 2020.07.06
07. 적 공격  (0) 2020.07.06
06. 적 이동  (0) 2020.07.04
05. 캐릭터 이동  (2) 2020.06.29