본문 바로가기

게임 개발/[D2D_Portfolio] DirectX2D 포트폴리오 작업일지67

39. Camera 원근 투영 활용 Camera 원근 투영 활용 - 원근 투영은 초기 엔진 작업 시에 만들어두긴 했는데, 2D 게임이라 사실상 직교투영만 주로 사용해왔다. - 지금 원근 투영을 사용하는 이유는 배경을 그릴 때 깊이 값을 다르게 줘서 멀리 있는 물체는 더 천천히 움직이도록 해서 깊이감을 형성하기 위해서이다. - 이를 위해 카메라를 1개 더 추가하고, 해당 카메라는 Background Layer만 찍도록 했다. - 예를 들어 밤을 배경으로 하는 맵을 만든다고 가정했을 때, 건물은 비교적 가까이 있지만, 달과 별은 저 멀리 있다. - 여기서 플레이어가 움직일 때 건물과 달과 별이 같이 움직인다면 달과 별이 멀리 있다고 느껴지지 않을테니, 이 부분을 구현하기 위해 원근 투영을 사용하는 것이다. - 원근 투영을 사용했을 때 가까이 .. 2023. 5. 2.
38. ItemInfoUI 구현 & 마검 아이템 구현 및 장착 시 이펙트 구현 ItemInfoUI 구현- 이는 이전에 구현했던 SkulInfoUI와 비슷한 구석이 많은데, 결국 아이템도 UI에 보여질 아이템의 이미지, 이름, 설명을 기재해야 하므로 이런 정보들을 한번에 관리할 수 있도록 ItemInfo라는 구조체를 따로 만들었다. - 이렇게 구현하고 나니 생기는 장점은, DetailInfo (UI가 선택되었을 때 우측에 뜨는 설명란을 구성하는 구조체)에 SkulInfo와 ItemInfo를 멤버로 두기 때문에 SkulInfo -> DetailInfo에 값을 전달할 필요가 없어져서 코드가 훨씬 간결해진다는 것이다. - 그리고 SkulInfo에 멤버를 추가하면 DetailInfo에 자동으로 추가되는 이점이 있다. (다만 이 경우 멤버를 삭제할 때 관리 포인트가 늘어날 수 있는데, 이 경.. 2023. 5. 1.
37. SkulItemUI 구현 완료 & Item 기초 작업 SkulItemUI 구현 완료 - 인벤토리를 열고 스컬에 마우스를 대면 나오는 Detail UI를 구현했다. - 스킬에 대한 설명과 스킬 이미지, 스킬 이름 등을 표시해주어야 했기 때문에, Skul 클래스로부터 이 정보를 받아오도록 했다. - Skill을 구성하는 요소를 정리하다 보니 생각보다 많다는 걸 느꼈는데, 이걸 파편적으로 관리하기보다는 구조체로 묶어서 관리하는 것이 더 수월하겠다는 생각이 들었다. (더욱이 지금과 같이 정보를 넘겨주어야 할 때는 더더욱 필요) - 결국 SkillInfo에 담길 텍스쳐는 UI에 표시될 텍스쳐, 바닥에 떨어졌을 때 텍스쳐, 인벤토리에 있을 때 텍스쳐 총 3개가 필요하고, 스킬 설명, 스킬 이름, 쿨타임이 필요하므로 이 정보들을 관리하는 구조체를 만들었다. - 최종 목.. 2023. 4. 29.
36. Font Engine 추가 & Inventory 내 Skul 선택 시 Detail창 구현 중 Font Engine 추가 - FW1FontWrapper 라이브러리를 이용해서 구현했다. - 이 라이브러리는 DirectWrite를 래핑하여 만들어진 클래스인데 사용하기 편하게 구현되어 있다. - 여담이지만 이 라이브러리를 접하게 된 계기는 윗 기수의 시연회를 보다가 Font 관련 dll 파일이 눈에 띄어서 검색해봤고, 공교롭게도 마침 내 프로젝트에 폰트 렌더링이 필요한 시점이라 구글링을 통해 사용법을 습득하게 되었다. - Bold 처리를 해줘야 하는데, 이 부분이 래핑되어 있어서 상당히 애먹었다. (찾아보니 오버로딩된 다른 생성자에서 IDWriteFactory와 FONT관련 구조체를 받는 버전이 있었고 용도에 맞게 구현했다) Inventory 내 Skul 선택 시 Detail창 구현 중 - 위에서 만든.. 2023. 4. 28.