목록공부 (292)
응애맘마조
플레이어와 보스에게 조명 효과를 주는 것이 과제였습니다. 플레이어는 월드 좌표를 사용하고 조명은 스크린 좌표를 사용하기 때문에 이 둘의 좌표를 맞추는 것이 힌트였습니다. //main.h #pragma once class Main : public Scene { private: ObTileMap*map; TitanSoul*player; TitanBoss*boss; ObRect*ui; vector PlWay; Vector2 plDest; Vector2 plSour; float g; public: virtual void Init() override; virtual void Release() override; virtual void Update() override; virtual void LateUpdate() ..
오늘은 장면 Scene 전환에 대해서 배웠습니다. 스테이지나 맵 전환에서 주로 사용합니다. 들고 있는 객체는 맵마다 다 다릅니다. 마을에서의 객체, 상점에서의 객체, 보스방에서의 객체 등등 전부 제각각의 객체를 가지고 있습니다. 하지만 항상 런타임 중에 동적할당으로 생성했었는데 그렇게 되면 메모리누수가 되기 때문에 컴퓨터에 안 좋은 영향을 주게 됩니다. 그래서 배열이나 오브젝트 풀링을 사용합니다. 맵 전환이나 일정 부분을 넘어갔을 때 로딩중의 장면이 나오면서 잠깐잠깐 느려지는 경우가 있습니다. 그때 볼 수 있는 장면이 로딩씬입니다. 로딩씬은 미리 생성했던 객체를 가져오기 때문에 느려질 수밖에 없습니다. 그렇다고 SafeDelete를 사용하게 되면 메모리 해제를 하게 되어 전환 시에 가리키고 있는 주소가 ..
어제 말했던대로 폰트와 조명에 대해서 배웠습니다. 먼저 폰트입니다. 폰트로 DirectX에 컴포넌트로 DirectWrite로 있습니다. 그림판에 텍스트로 선택하면 사각형 박스가 나오는 것 처럼 DirectX의 폰트도 똑같습니다. 지금 2D를 배우지만 시스템은 3D로 배우고 있습니다. 하지만 폰트는 2D로 포함되기 때문에 D2D와 함께 사용해야합니다. 폰트토 배열처럼 vector를 사용합니다. textDesc.font = font; textDesc.fontSize = size; textDesc.stretch = stretch; textDesc.style = style; textDesc.weight = weight; 폰트의 매개변수입니다. 다음 조명입니다. 조명도 하나만 관리하기 때문에 싱글톤입니다. str..
오늘부터 게임의 기능을 작은 것부터 조금씩 알아봤습니다. 먼저 UI입니다. UI는 마우스와 충돌했을 때나 눌렀을 때의 역할을 합니다. 고정된 창에서만 프로그램이 동작한다면 상관이 없지만 카메라의 영향도 받는다면 위치가 달라지게 됩니다. 그래서 창에서 x, y 좌표의 값을 빼야 카메라가 움직여도 제대로 된 위치에서 동작하게 됩니다. Texture입니다. 이미지와 관계가 있으며 싱글톤입니다. 픽셀 수도 Texture이며 자원을 불러오는 클래스입니다. SRT만 다를 뿐이고 자원을 제각각 사용하게 되면 효율이 좋지 않기 때문입니다. 그래서 배열로 쓰게 된다면 선형 구조이기 때문에 처음부터 끝까지 탐색을 하게 되기 때문에 트리나 해시로 탐색이 용이한 구조로 되어있는 STL의 map을 사용하는 것이 좋습니다. ma..
타일맵에서 움직일 수 없는 타일맵을 구현하는 것이 과제였습니다. //main.h #pragma once class Main : public Scene { private: ObTileMap* map; TitanSoul* player; TitanBoss* boss; vector PlWay; Vector2 plDest; Vector2 plSour; float g; public: virtual void Init() override; virtual void Release() override; virtual void Update() override; virtual void LateUpdate() override; virtual void Render() override; virtual void ResizeScreen..