캐릭터 블루프린트를 열고 콤보 공격에 대해서 제작합니다.
왼쪽 마우스 버튼을 누르면 IsAttacking 상태가 아닐시 isAttacking을 True 해주고 공격하는 애니메이션 몽타주를 실행함과 동시에 그다음 콤보로 넘어갈 수 있도록 Combo(인티저)를 다음 모션이 나올 값으로 변경해줍니다.
IsAttacking상태가 맞을 시 이미 공격하고 있는 상태였으니 다음 공격이 진행되도록 BtnAttack을 True로 만들어 줍니다.
그리고 공격을 멈춘다면 최초 공격이 다시 나올 수 있게 ResetCombo 함수를 만든 후 IsAttacking,BtnAttack,Combo를 초기화해줍니다.
btnClick 함수를 만들고 BtnAttack이 트루일 시 BtnAttack을 false로 만들어 줌과 동시에 다음 몽타주가 실행되게 해줍니다.(공격 중 클릭을 했을시 콤보가 나오도록 하는 것입니다.)
애니메이션 몽타주로 가보면 SaveAttack과 ResetCombo라는 노티파이가 존재합니다.
원래는 만들어줘야하지만 이 에셋에는 기본적으로 만들어 놓은게 있으니 가져다 쓰겠습니다.
애니메이션 블루프린트로 이동하여 몽타주에 있는 SaveAttack 노티파이 시 BP_Character의 BtnAttack을 확인하고 트루인 상태면 BtnClick 이벤트를 실행시켜 콤보 공격이 실행 되게 합니다.
몽타주에 있는 ResetCombo에 들어가게 되면 BP_Character에 있는 ResetCombo를 실행시켜 다시 최초 공격으로 넘어가도록 합니다.
컴파일 후 실행하면 콤보공격을 하는 것을 볼 수 있습니다.
캐릭터 블루프린트로 들어와 뷰포트에서 Capshule Collision 컴포넌트를 생성한 후 Mesh의 자식으로 넣습니다. 그 이후 Sword의 소켓을 찾아 부모소켓으로 만들어주고 Shape로 모양을 검모양에 맞게 수정합니다.
그리고 콜리전의 디테일 창에서 Collision Presets을 Custom으로 바꾼 후 월드 다이나믹과 전부 다 겹침으로 설정해줍니다.
콜리전 아래쪽으로 더 내려서 이벤트에 있는 OnComponentBeginOverlap을 눌러 이벤트그래프에 생성합니다.
그리고 Self Actor가 아닐시 충돌한 액터의 이름을 PrintString으로 확인할 수 있게해줍니다.
실행해보면 닿을 시 닿은 액터들의 name이 출력되는 것을 볼 수 있습니다.
하지만 그냥 평소 상태에서도 출력되는 것은 이상하고 공격 중에만 닿게 해야합니다.
캐릭터 블루프린트로 와서 커스텀 이벤트를 만든 후 StartAttack일때는 캡슐콜리더를 켜주고 EndAttack일때는 캡슐콜리더를 끄는 것을 만듭니다. 디테일 창에서는 기본 NoCollision으로 설정합니다.
애니메이션 들에서 노티파이를 StartAttack과 EndAttack을 추가합니다.
추가한 노티파이를 애님 블루프린트에서 불러오고 노티파이시 BP_Character의 StartAttack,EndAttack을 실행시켜줍니다.
실행해보면 공격 시에만 로그가 출력되는 것을 확인할 수 있습니다.
'Programming > 언리얼엔진' 카테고리의 다른 글
언리얼 엔진 소켓 (0) | 2020.07.22 |
---|---|
언리얼 엔진 노티파이 (0) | 2020.07.22 |
#02) 언리얼 애니메이션 블루프린트 (0) | 2020.07.21 |
#01) 언리얼엔진 캐릭터,이동 만들어보기 (0) | 2020.07.20 |
언리얼 액터 제작,배치하기 (0) | 2020.07.20 |