언리얼 게임제작을 배우고 있는 학생인데 제가 구현하고 싶은 것을 이렇게 해도 될까 싶어서 물어보러 왔어요.
1. 장르는 뱀서라이크 게임이고 플레이어가 몹을 잡아서 경험치를 얻고 레벨업을 하면 랜덤선택지로 스탯을 골라서 향상시킬 수 있음
2. 스테이지가 끝나면 몹을 잡고 얻은 돈으로 상점에서 아이템을 구입해 스탯을 향상시킬 수 있음 (기술력 한계로 스탯건드리는게 전부임..)
3. 스탯은 액터컴포넌트를 상속받은 스탯컴포넌트.cpp로 관리하고 있음
4. 스킬은 플레이어가 직접 입력하면 애니메이션 인스턴스 함수에 구현된 함수를 통해 애니메이션 몽타주가 재생되고 그 몽타주의 노티파이를 이용해서 특정 노티파이에 도달하면 플레이어 캐릭터.cpp에 구현된 스킬효과 함수가 발동됨
여기서 제가 하고싶은건 플레이어가 스탯을 올리면서 특정 스탯을 일정 수치이상으로 달성하면 그 스탯의 특색을 살리는 스킬효과로 바꾸면서 일종의 스킬 업그레이드?같은걸 하고싶습니다.
제가 생각한 방법은 우선 스탯을 업그레이드하면 새롭게 바뀔 애니메이션 몽타주를 스탯별로 각각 다 만들고 (수십개가 되겠죠)
그 몽타주마다 각기 다른 노티파이를 다 만들어 줍니다. 그리고 플레이어캐릭터 코드에서 각 스탯별로 업그레이드될 스킬의 함수를 전부 구현해주고
스탯을 향상시켰을때 if로 비교해서 특정 수치에 도달하면 스킬을 입력할때마다 스위치문으로 지금 캐릭터가 어떤 모드인지 (즉,어떤 스탯이 특정수치에 도달했는지)에 따라서 그에 맞는 애니메이션 몽타주를 재생하면 그 몽타주에 있는 노티파이가 재생될거고 그 노티파이마다 캐릭터클래스에서 스킬을 구현하는 함수가 다 다르니깐 제가 원하는대로 되지 않을까 싶습니다.
다만 이렇게 하면 좀 1차원적인 방법이다보니 스킬 입력할때마다 결국 플레이어가 무슨 상태인지 체크하는 스위치를 매번 돌려야하고 각 노티파이마다 다른 스킬의 효과를 구현해야하므로 캐릭터클래스에서 수십개의 각기다른 스킬 효과를 구현해야 합니다.
제 머리로는 이렇게밖에 안떠오르는데 이렇게 해도 상관이 없을까요 아니면 더 좋은 효과적인 방법이 있을까요?
GameplayAbility는 당신을 구원할것입니다. GameplayEffect와 GameAttribute를 부어서 먹어보세요
이것도 알아보려했는데 좀 어렵더라구요.. 예제같은거 좀더쉽게 배우고싶은데 독학하기엔 제 수준에는 버거웠음ㅠ
어차피 GAS로 하게 될거다. 어려워도 그냥 물고 늘어져
스킬 효과를 오브젝트로 만들고 스탯 업그레이드 시에 델리게이트를 통하든 업그레이드 함수에 직접 선언하든 해서 미리 스킬 효과 오브젝트를 캐싱해놓으삼 - dc App - dc App
그러면 스킬 발동할 때마다 검사 안해도 되잖슴 근데 윗댓 말대로 어빌리티 시스템 쓰는게 오천만배 나음 - dc App