본문 바로가기

전체 글339

15. UI 대화창 구현 및 TownScene 배경 수정 UI 대화창 구현 - DialogueUI와 UI Manager 클래스 구현 - UI Manager를 구현한 이유는 각각 유니크한 UI들을 끄고 켤 수 있는, 그리고 화면 출력 순서를 관리해줄 수 있는 관리 클래스가 필요하다고 생각했다. - UI Manager에서는 Init 함수에서 DialogueUI 인스턴스를 생성해서 Enum을 키 값으로 map에 저장했다가, Get 함수를 통해 외부로 노출시킬 수 있도록 했다. - UI는 씬 전체적으로 사용되는 오브젝트이기 때문에 씬 외부에서 렌더링해줄 수 있는 방법을 구현해야겠다. TownScene 배경 - 기존 배경은 원래 맵 용도로 사용되던 리소스가 아니라서 맵으로 쓰기에 보기에 미흡한 부분이 많았다 - 따라서 배경으로 쓸만한 리소스와, 배경 너머 보이는 하늘로.. 2023. 3. 29.
8. 카메라 연결 & 플레이어 이동 이번 강의에서는 카메라 연결과 플레이어 이동 두 가지 기능에 대해 알아봤다. 카메라 연결의 경우는 이전 SpringArm과 비슷하게 헤더 파일을 추가하고 클래스를 선언 및 정의하는 과정이었다. 다만 좀 다른 점은 SetupAttachment 함수에서 연결해주는 부분이 RootComponent가 아닌 SpringArm이라는 것 플레이어 이동의 경우 상/하/좌/우 이동하는 기능을 구현했는데, 프로젝트 설정의 입력 란에서 축에 대해 각각 값을 정할 수 있었는데, 예를 들면 Forward는 1, Backward는 -1이었다. 이런 식으로 설정해 준 다음 실제로 AShooterCharacter 클래스에서 멤버함수를 만들어주고, 이 함수들을 바인딩해주는 일련의 과정들을 거치게 되었다. void AShooterCha.. 2023. 3. 28.
14. Player Interface HUD 구현 Player Interface HUD - 플레이어의 현재 상태를 나타내는 HUD로, HP바와 스킬셋을 보여준다. - 현재 캐릭터의 종류, HP바를 구현했고, 스킬셋은 추후 구현할 예정이다. - PlayerInterface HUD 클래스를 두고, HealthBarHUD 클래스 등 같이 움직이는 HUD들을 PlayerInterfaceHUD의 월드에 종속되게 해서 같이 움직일 수 있도록 처리했다. - HP 바의 경우 조금 공을 들였는데, HP를 나타내는 텍스쳐가 1칸(1x8 텍스쳐)이어서 이걸 이용해서 HP를 그리려면 어떻게 해야 할까 고민한 끝에 hlsl 셰이더 코드랑 친해질 겸 한번 셰이더로 짜봤다. - 현재 HP바의 위치, 텍스쳐의 크기, 현재 플레이어의 체력 비율, 화면 전체 크기를 상수 버퍼로 넘겨서.. 2023. 3. 28.
7. Spring Arm 만들기 이번 강의는 Spring Arm을 만드는 내용이었다. Spring Arm을 만들면서 언리얼 엔진의 UPROPERTY 매크로를 통해 속성을 정의하고 블루프린트나 Details 창에 표시되도록 하는 VisibleAnywhere 옵션과 카테고리를 설정하는 등의 기능들을 알아봤다. SpringArm 클래스에 대해서는 아직 정확하게 설명이 나오진 않았지만 이 SpringArm의 끝에 카메라를 단다고 했으니 셀카봉? 비슷한 개념으로 생각이 된다 다만 내가 들고 있는 게 아니라 몸 어딘가 긴 막대기를 연결해서 쭉 빼놓은 느낌?ㅎㅎ - 그 외에 헤더 파일을 추가할 때 API문서를 참고해서 주소를 알아내는 방법과, 헤더 파일을 솔루션 탐색기에서 검색해서 알아보는 내용을 배웠다. - 이 내용도 잘 기억해뒀다가 앞으로 작업.. 2023. 3. 27.