https://inradestrt.tistory.com/18
위 링크에서 이어서 진행합니다.
우선 공격모션으로 사용할 모션을 선택합니다.
그리고 모션파일에 오른쪽 마우스 버튼을 클릭하고 생성 -> 애님몽타주 생성을 해줍니다.
그럼 위 작은 이미지와 같이 몽타주 파일이 생성됩니다.
몽타주 파일을 열어줍니다.
위와같은 창이 열리는데, 여기서 공격모션의 종료 시점에 OnAnimationAttackEnd 라고 하나의 마커를 표시 해 줍니다.
이로써 해당 에니메이션을 재생하고 나면 공격이 종료되었다는 신호를 받을수 있게 됩니다.
마커를 표시 하였으면, 우선 캐릭터 블루프린트로 이동합니다.
캐릭터 블루프린트에서 커스텀 이벤트를 하나 생성 해 줍니다. 현재 만들어 놓은 것은 OnAnimendAttack이라고 이름 지어 놓았습니다.
그 후에 콘텐츠 브라우저에서 만들어 놓았던 캐릭터 애니메이션 블루프린트로 이동 해 줍니다.
케릭터 블루프린트를 열어줍니다.
캐릭터 에니메이션 BP에서 지정된 에니메이션 재생에 대한, Notify를 생성하여 만들어 놓았던 마커를 호출합니다.
마커를 가져오는 오브젝트, 즉, 위 OnAnimationAttackEnd 가 호출될 폰 이 무엇인지 지정해주는 Try Get Pawn Owner을 호출합니다.
형변환 시켜야 할 블루프린트가 무엇인지 알려주어야 하기에 해당되는 블루프린트를 호출해줍니다.
위에 지정된 조건을 만족 하였을 경우 어떠한 이벤트를 호출하게 될 것인지 지정해줍니다.
다시해석해보면,
Try Get Pawn Owner 의 지정된 타깃에서 Notify [ OnAnimationAttackEnd ] 라는 것이 발생 하였을 때, MoveCheartorBP 라는 블루프린트에 접근을 하여, On Anim End Attack 이라는 이벤트를 동작 시킵니다. 라고 해석 할 수 있습니다.
다시 돌아가서 MoveCheartorBP로 이동해줍니다.
열어준 블루프린트의 이벤트 그래프에서 컴포넌트 창 -> 변수 명에서 IsAttacking 변수를 선언하고 변수는 BOOL로 해줍니다.
여기서 IsAttacking 이라는 Bool 변수로 공격중인지 아닌지를 판별할 수 있게 만들어야 합니다.
만들어낸 커스텀 이벤트에 IsAttacking 에 대한 SET을 바꾸어 줍니다. 즉, 커스텀 이벤트가 동작 할 시에 [ 위 블럭상 동작사항으로 이야기하면, 애니메이션 끝에 찍어놓았던 마커가 호출 되었을 때 ] IsAttacing을 false로 바꾸어 줍니다.
Branch 는 if문과 동작방법이 같습니다.
즉, 마우스 왼쪽 버튼을 눌렀을 때 첫번 째 Branch에서 Is Attacking과 비교를 합니다. 처음에는 Is Attacking이 false이기 떄문에 값이 달라 False가 출력됩니다. 두번째 Bracnch에서는 캐릭터 무브먼트 -> Is Falling을 검사하여 캐릭터가 떨어지고 있는지 검사합니다. 떨어지고 있지 않고, False가 반환되고 있기 때문에 False,true 로 False가 반환됩니다. 그 후 Set에서 Is Attacking이 True로 변환되고, 애니메이션이 출력됩니다.
애니메이션이 출력되는 동안 Is Attacking이 참 이기 때문에, 마우스 왼쪽 버튼을 눌러도 Branch에서 True로 가기 때문에, 동작하지 않습니다.
동작사항 확인시에도 마우스 왼쪽버튼을 계속 눌러도 공격이 종료될 때 까지는 공격이 안되는것을 알 수 있습니다.
이와같은 방법으로 점프 모션도 한번만 출력되게 만들 수 있습니다.
'언리얼엔진 5 > 블루프린트' 카테고리의 다른 글
블루프린트 Get Player Controller (0) | 2022.06.30 |
---|---|
블루프린트 Enable Input (0) | 2022.06.30 |
블루프린트 GeT Actor Location (0) | 2022.06.27 |
블루프린트 AddActorWorldRotation (0) | 2022.06.27 |
블루프린트 Event Tick (0) | 2022.06.27 |