프로그래밍 공부
작성일
2024. 2. 16. 16:37
작성자
WDmil
728x90

Heal을 사용하기 위해 객체를 만들어보자.


BP_Wizard

 

BP_Wizard에 BP_Wizard_Skill형태의 객체를 만들어서 Skill을 관리하게 한다.

Heal이 될 수 도 있고, 다른 마법이 될 수 도 있다.

 

아예 배열형태로 구현, 관리하여 얻은 순서대로 마법을 바꾸고 시연할 수 도 있을 것이다.

변수로 각 해당되는 Skill을 객체로 받고,

 

Skill에 현재 플레이어가 들 고 있는 마법을 기입하고, 해당 마법을 플레이어가 사용하게 되는 것 이다.

 

모든 Skill은 각자의 Attack이벤트를 가지고 있으며, 이러한 Attack이벤트를 오버라이딩하여, 자식객체에 해당하는 이벤트를 실행하는 원리이다.


Weapon Change 정리

무기를 바꿔끼는 이벤트를 다음과 같이 정리해준다.

 

Off Selected와 On Selecte를 사용해서 Montage를 재생시킬 것 이다.

무기의 모션과 몽타주는 위와같이 정리한다.

 

이제부터, 모든 CombatState는 Weapon에서 받아와서 처리한다.'

 

Weapon이 만약, NULL이라면 Unarmered로 반환시키고, 아니라면 해당 무기여부를 반환한다.

위와같이 정리한 뒤, 애니메이션의 ABP도 수정해준다.


ABP수정

복잡한 전투상황시, 무기 등의 전투모션에 대한 포즈를 위와같이 전환한다.

 

달리거나 이동하는 모션은, 전투여부에 따라 ENum으로 관리하고, 공격여부는 전부 Upper위주로 전환해주면 Enumd을 더 깔끔하게 관리할 수 있을것이다.


애니메이션 결합하기

 

위와같이 전환여부를 관여했으면, Montage를 작동시킬 때, 다음 애니메이션으로 전환하기 위해 할 수 있는 방법이 제한적이게 된다.

 

종료여부를 Tick마다 확인할 수는 없지 않는가?

 

그래서 애니메이션을 결합해서 한번에 해결한다.

애니메이션 컴포짓 을 사용하여 애니메이션을 결합해서 사용한다.

컴포짓은 위와같이 이어붙이고 저장해주면 된다.'

 

( 단, 본의 여부는 동일하게 사용해야 한다. )

몽타주를 위와같이 전환해서 사용하면 된다.

 

애니메이션을 결합하였음으로, 좀 더 복잡한 몽타주가 될 것이다. ( 노티파이를 더 넣어야 함으로 )

 

이제, 무기를 뽑을 때, 이 몽타주를 호출하기만 하면 된다.

 


무기를 뽑는 애니메이션 몽타주는, 무기가 가지고 있다.

 

이떄, 사용자의 타입에 따라. Character에 형변환 하든, 더 하위에 형변환 하든 하여 내부에 TypeEnum을 생성하여, Type에 따라 이러한 ANimMontage를 다르게 호출할 수 있을 것 이다.

 

이러면 너무 커지니까, 각 객체별 PlayMontage여부를 무기 하나에 전부 몰아넣는 것 이 아닌, 각 캐릭터별 무기의 애니메이션을 가지게 관리해도 될 것 이다.

 

무기마다, 선택해서 실행하는 Montage를 다르게 하여 실행하게 하면, 좀 더 객체관계적으로 올바르게 조절할 수 있다.


테스트

 

좀 더 세부적으로, 전투상황 관리여부를 전환시 또는 무기를 장착할때 바로 적용할 수 있게 해두면 좋을 것 이다.

 

728x90