프로그래밍 공부
작성일
2024. 2. 7. 14:42
작성자
WDmil
728x90

지금까지 구현하였던, 케릭터를 바탕으로 인터페이스 형태로 재구축하여, 무기를 기준으로 설계를 다시해보자.

 

무기를 든 Character는 항상 그 무기의 공격모션 을 사용할 수 있어야 한다. 그럼으로, 무기와 케릭터를 인터페이스로 정의하고, 해당 인터페이스를 구현하여 각 캐릭터당 공격모션을 자유롭게 사용할 수 있도록 공통사항을 주어야 할 것 이다.

 

ICharacter , IWeapon으로 구성된 인터페이스를 상속받는 각 무기와 Character를 생성한다.

 

여기서, 캐릭터는 지금까지 만들었던 player와 Enemy, 무기는 만들었던 Sword와 FireBall이다.

 


인터페이스 구축하기

 

언리얼에서는 간단하게 인터페이스를 구현할 수 있도록 지원해주고 있다.

위와 같이, 블루프린트 인터페이스를 생성해준다.

인터페이스 창 이다. 이 창 내부에서 사용해야할 값들은 Weapon과 현재 상태, 현재 무기상태, 움직일수 있는지 , 무기콤보의 상태 등 이다.

 

이 스테이터스를 사용해서 현재 무기의 상태값을 받아와 통제할 것 이다.

 

각 구현부는 Get과 Set을 통해, 기본적인 데이터구조를 받아오고 설정할 수 있도록 정의해준다.

 

예를들어 GetCurrent를 구현한다고 하면, 현재 Weapon을 가져와야 함 으로, 다음과 같이 구현한다.

 

예를들어 Set_Weapon_State를 구현한다고 하면, enum을 가져와 구현해야 함으로 다음과 같이 구현한다.

 

 

인터페이스는 읽기 전용임으로 수정할 수 없다는 점에 유의하자.


인터페이스 적용하기

 

이제 플레이어에서 인터페이스를 적용해보자. 간단한 방법으로 인터페이스를 적용할 수 있다.

BP-> 클래스 세팅-> 디테일창 의 인터페이스 추가

를 통해 인터페이스를 어떤걸 구현할 것 인지 정의한다.

 

이로써, 캐릭터는 인터페이스를 받아와 구현만 해주면 된다.

 

각 구현부는 Player의 변수값을 기입받아 전달하는 식으로 구현해주면 된다.

위와같이 정의하고 연결하였다면 성공이다.

 

이제, 지금까지 연결해놓았던 모든 공격이펙트, 공격입력 이벤트 등을 전부, State기준으로 재정의해야 한다.

728x90