프로그래밍 공부
작성일
2022. 7. 2. 21:26
작성자
WDmil
728x90

https://inradestrt.tistory.com/18

 

언리얼 엔진 5 케릭터 애니메이션 적용하기

https://inradestrt.tistory.com/15?category=1033838 언리얼 엔진 5 캐릭터 이동하게 만들기 블루 프린트 클래스 생성 후 이름 설정합니다. 아무 이름이나 붙여서 블루 프린트를 생성하고 생성된 블루프린트를

inradestrt.tistory.com

위 링크에서 이어서 진행합니다.

 

우선 공격모션으로 사용할 모션을 선택합니다.

그리고 모션파일에 오른쪽 마우스 버튼을 클릭하고 생성 -> 애님몽타주 생성을 해줍니다.

그럼 위 작은 이미지와 같이 몽타주 파일이 생성됩니다.

몽타주 파일을 열어줍니다.

위와같은 창이 열리는데, 여기서 공격모션의 종료 시점에 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로 가기 때문에, 동작하지 않습니다.

동작사항 확인시에도 마우스 왼쪽버튼을 계속 눌러도 공격이 종료될 때 까지는 공격이 안되는것을 알 수 있습니다.

이와같은 방법으로 점프 모션도 한번만 출력되게 만들 수 있습니다.

728x90