ToyProject/RedCaped
[언리얼엔진 5] 18. Fix Floating Damage
몬스터를 공격하면 데미지가 화면에 띄워지지만 문제하나를 발견했다. 빠르게 공격하면 그전의 데미지 위젯은 사라지고 하나의 위젯만 발생하게 되는 것이다. 빠른 연타공격을 해도 데미지 위젯은 결국 하나만 보여주게 되는 것이다. 기존에는 FloatingDamage를 몬스터 액터에 띄우는 방식으로 구현했다. 위 문제를 해결하기 위해서는 또 하나의 액터를 만들어 스폰하는 방식을 생각했다. 결국 몬스터 액터에서 위젯을 소환하는 것이 아닌 위젯을 소환하는 액터를 스폰하는 방식으로 바꾸었다.
[언리얼엔진 5] 17. LevelUP + Player Stat (String Table)
게임에서 플레이어 스탯(status)는 빼놓을 수 없는 요소일 것이다. 특정 능력치에 종류를 부여하여 계량화한 시스템으로 플레이어가 강해지기 위한 가장 기초적인 방법이다. 레벨업을 하면 3개의 스탯업 요소가 무작위로 나타나고 하나를 고를 수 있는 시스템을 구현해볼 것이다. 디자인은 나중에 손을 봐야할 것 같다. 스탯 이름 아래에는 숫자만 놓고 버튼도 이미지를 따로 생성해줄 것이다.
[언리얼엔진 5] 16. Loading Screen + Fade In/out
레벨에 디자인하다보니 openlevel을 실행하면 잠시 동안 멈추게 되었다. 이게 너무나도 거슬려서 로딩스크틴을 띄우기로 했다. 위젯블루프린트로 만들어도 되지만 무료 플러그인이 잘되어 있어 활용하기로 했다. Async Loading Screen 비동기 로딩 화면을 사용하면 프로젝트 설정에서 로딩 화면 시스템을 쉽게 구성하고 새 레벨을 열 때마다 로딩 화면을 자동으로 추가할 수 있다. 아래에서 자세한 설명을 찾아볼 수 있다. https://github.com/truong-bui/AsyncLoadingScreen GitHub - truong-bui/AsyncLoadingScreen: Async Loading Screen is a free and open-source plugin for Unreal Engin..
[언리얼엔진 5] 15. Chargeing Attack and RoundProgress Bar
키를 누르면 공격이 나간다. 심심한 느낌을 지울 수가 없어서 차징공격을 만들어 보기로 했다. 기존 활 공격에 추가하고 차징을 할 수록 강해지는 기능을 구현하면 재미있을 것 같다. 차징공격을 구현하기 전에 진행바가 필요하다. 이때 직선의 progressbar는 밋밋할 수 있으니 원형으로 구현할 것이다. 일단 원형 이미지가 필요하다. 큰 원에서 작은 원을 빼면 되므로 머티리얼을 생성하여 만들어 주었다. https://blueprintue.com/blueprint/ee4tsosw/ Round Progress Bar posted by BoobieBird | blueprintUE | PasteBin For Unreal Engine No description provided blueprintue.com 다음과 같이..
[언리얼엔진 5] 14. Save and Load Variable in Next Level
이번에는 다른 레벨(맵)으로 이동할 때 변수를 저장해줄 차례이다. 처음 언리얼엔진을 접했을 때 가장 의아했던 부분이다. 왜 다음 레벨로 가는데 save, load 과정이 필요할것인지. 이는 객체를 이해하면서 저절로 알게 되었다. BP_Player의 객체들은 같은 변수, 다른 값을 가질 수 있기 때문이다. 변수를 저장하는데 핵심이 되는 노드이다. Save Game Object를 레퍼런스로 받아 Slot Name으로 저장한다. 이후 저장한 슬롯에서 가져와 캐스팅하는 방법으로 저장한 변수를 불러올 수있다. 첫 사진은 플레이어의 현재 변수값을 SaveGame 블루프린트에 저장하는 모습이다. 다음 사진으로는 저장한 변수의 값을 불러오는 과정이다. 이제 플레이어나 펫의 변수를 추가할 때 Save Game에 추가해주..
[언리얼엔진 5] 13. Changing Dynamic Lit sprite + Error Handling
이전 12장에서 놓친 것이 있어 내용에 앞서 추가하겠다. 커스텀 머티리얼을 설정해주었지만 앞면만 라이팅이 적용되고 후면에는 다이나믹 라이팅이 적용되지 않는 현상을 발견하였다. 구글링을 열심히 해도 해답을 찾기 정말 힘들었다. 이후 여러 유튜브 영상을 뒤지면서 한 영상의 댓글에서 해답을 찾을 수 있었다. 유튜브에서 발견한 댓글 -- 1) TwoSidedSign returns -1 or 1, not 0 or 1 -- 2) Lerp will happily extrapolate when alpha is outside the [0-1] range, i.e. with 0/1 for the A/B inputs and an alpha of -1, the return value will be -1, not 0 -- 3)..
[언리얼엔진 5] 12. Dynamic Lighting PaperZD + Normal Map
이 프로젝트는 PaperZD 캐릭터를 사용하는 만큼 라이팅이 상당히 까다롭다. png 파일로 가져와 플립북을 만들기에 이에 맞는 normal map도 생성되지 않기 때문이다. 언리얼엔진을 사용하는 만큼 다이나믹한 라이팅을 구현하고 싶었다. 실시간으로 변화하는 빛에 캐릭터들의 모습이 바뀌면 얼마나 아름다울까? 그것도 2D 픽셀 캐릭터인데도! 일단 각 스프라이트에 대한 normal map이 필요하다. 노멀맵에 대한 설명은 따로 다루겠다. 첫번째 고난이다. png를 노말맵으로 바꾸어주는 사이트는 구글에서 흔히 찾아볼 수 있었다. 하지만 나는 스프라이트만을 바꾸고 싶은데 뒷 배경까지 처리해버리는 것이다. 결국 aseprite라는 프로그램의 힘을 빌려야 했다. Aseprite Aseprite는 픽셀아트 툴로서 픽..