예전에 만들었던 총은 너무 한정적이었다.
무슨 말이냐.. 하나의 "총"이라는 클래스는 있었지만 거기서 따로 스나이퍼, 샷건, 라이플, Melee weapon(칼, 몽둥이 같은 거) 를 분리하지 않고 하나로 관리해주다 보니까 나중에 코드를 짤 때 if 분기문을 너무 많이 쓰는 것이 문제였다.
예를 들면 스나이퍼라면 총을 들었을 때 if sniper -> 하면서 다른 로직을 엄청 짰었다.
이번엔 새로운 시스템을 도입했다.
하나의 부모클래스 (Weapon) 밑에, 자식 클래스로
AR, Sniper, Shotgun, Pistol, Melee 를 두고 각각의 클래스가 또 자식 클래스로
K2, AK47, M16.. 이런식으로 있는 것이다
이런 식으로 말이다. 이러면, 부모클래스의 속성들을 모두 상속받기 때문에 막 총별로 따로 구현을 안 해주어도 된다. 각자의 부모클래스만 수정을 해주면 된다!
그리고 Weapon은 Enum으로 무기 명들을 관리하며(k2, ak47...)
구조체로 총의 속성들(총 이름, 데미지, 탄창...) 을 정의해놓는다.
그리고 Interface 라는 기법을 사용했다.
https://docs.unrealengine.com/4.27/ko/ProgrammingAndScripting/GameplayArchitecture/Interfaces/
인터페이스에 대한 설명은 여기를 보자.
collision 영역에 들어가면 위젯 표시, 그리고 E를 누를 경우 현재는 화면에 hello 표시.
오늘 좀 정신이 없어서 여기까지만 만들었다.
아 그리고 이 weapon에 대한 시스템을 따로 컴포넌트로 분리할 예정이다.
뭔가 한국 배경으로 만들고 싶어서
k2 모델도 따왔다. 헤헤
매우 친숙한 총....