본문 바로가기

Win32 API44

Win32 API 기초 : Collider (2) Collider의 위치를 설정하기 위해멤버 m_vPosOffset과 m_vFinalPos를 두었고 크기를 설정하기 위해 멤버 m_vColliderSize를 두었습니다.해당 멤버는 SetColliderSize 멤버 함수를 통해 설정합니다.  m_vPosOffset은 Collider가 오브젝트의 위칫값으로부터얼마나 떨어져 있는지를 나타내기 위한 멤버입니다.  18번째 줄에 있는 finalupdate 함수는Collider가 오브젝트를 따라다닐 수 있도록위치를 설정해 줍니다. finalupdate 함수의 정의를 보면 Collider가 어떤 오브젝트에 달려 있는지멤버 m_pOwner에 저장했었죠? 해당 오브젝트의 위칫값을 GetPos 함수를 통해 얻어지역 변수 ObjectPos에 대입합니다. 그리고 Collide.. 2024. 7. 27.
Win32 API 기초 : Collider (1) 게임에서 반드시 필요한 충돌을 구현해야 합니다. 플레이어와 몬스터 오브젝트는 충돌 범위를 나타내는 Collider( 빨간 부분 )를 갖고 있습니다. Collider는 오브젝트를 따라다니게 되며, 오브젝트끼리 닿았을 때, Collider가 서로닿았다고 판단하여 이벤트를 발생시킬 수 있죠.  여기서 주의할 점이 있습니다. 만약 Collider가 닿는 순간 체력이 10내려간다는 코드를 작성했다고 가정해 봅시다. 두 오브젝트가 서로 닿은 상태로지나가게 되면 매 프레임마다 닿았다는 이벤트가 발생하여 체력이 10이 아닌 1000이 내려가는 현상이 발생할 수 있죠. 그래서 마치 키 입력을 구현했던 것처럼닿는 순간에만 체력이 10 내려가게 하고,계속 접촉된 상태라면 이벤트를 발생시키지않도록 해야 합니다. 이후 두 오브.. 2024. 7. 20.
Win32 API 기초 : Resource Manager 플레이어 오브젝트에 텍스처를 적용하고 싶다면플레이어 오브젝트 내에서 텍스처를 저장하는 멤버를만들고 그 멤버를 통해 직접 텍스처를 불러왔습니다. 그런데 이런 구조로 텍스처를 적용하면 문제가 있습니다. 만약 똑같은 모습을 한 몬스터를 여러 마리 출력하게 되면여러 텍스처가 그려지고 각 오브젝트마다 해당하는 텍스처를가리키게 되죠. 이렇게 할 필요 없이 어차피 모두 같은 텍스처를 적용할 것이라면텍스처 하나만 불러와서 모든 몬스터 오브젝트가 하나의텍스처만을 가리키게 하면 되겠죠.  이를 위해서 리소스를 관리하는 매니저 역할을 하는CResMgr 클래스를 만들었습니다. 매니저이기 때문에 프로그램 내에서 하나만 존재해야 하므로 싱글톤 객체로 생성하게 됩니다. 리로스 매니저는 멤버로 map형 m_mapTexture를 갖고.. 2024. 7. 19.
Win32 API 기초 : Resource (2) 이제 불러온 이미지를 플레이어 텍스처로 사용을 해 볼까요? CPlayer 클래스의 헤더 파일에 4번째 줄에서 CTexture 클래스를 전방 선언하여CTexture 클래스에 변경 사항이 생겨도굳이 CPlayer 클래스의 헤더 파일에서CTexture 클래스를 검사하지 않도록 합니다. 어차피 CPlayer 클래스의 소스 파일에서  CTexture 헤더 파일을 참조하고 있기 때문에 CPlayer 클래스의 소스 파일에서 검사를 진행하게 되기 때문이죠. 10번째 줄에는 CTexture형 포인터인,멤버 m_pTexture가 추가되었습니다. 특정 텍스처를 가리키는 포인터이죠. 이 포인터가 가리킬 텍스처가바로 플레이어의 텍스처입니다.  멤버 m_pTexture는 플레이어 오브젝트가 생성될 때는nullptr로 초기화되었다.. 2024. 7. 18.
Win32 API 기초 : Path Manager 이미지 파일을 가져오기 위해서CTexture 클래스로 객체를 만들고해당 객체의 멤버 m_hBit가 비트맵을 가리킵니다. 여기서 가리킨다는 의미는 포인터로써 가리킨다는 것이 아닙니다.비트맵은 윈도우에서 제공하는 오브젝트이기 때문에 해당 오브젝트의 ID를 알고 있어야 해당 오브젝트를 관리할 수 있게 되죠? m_hBit는 비트맵의 ID를 알고 있다, 저장하고 있다고 보면 됩니다. 그리고 DC 하나를 만들어서 비트맵과 연결하고 그 연결된 DC의 ID를 m_hdc에 저장하여 비트맵에 그리기 작업을 진행할 수 있게 됩니다.  이때 m_hBit가 가리키는 비트맵은 바로,불러오고자 하는 이미지 파일입니다. 이를 위해서 불러오고 싶은 이미지 파일의 경로를 알아야겠죠. CTexture 클래스에서 11번째 줄에 있는 Lor.. 2024. 7. 14.
Win32 API 기초 : Resource (1) 오브젝트를 단순히 원형이나 사각형이 아닌,이미지를 통해 표현하려고 합니다. 이렇게 오브젝트의 겉모습 역할을 하는이미지를 Texture라고 합니다. 이러한 Texture나 Sound 같은 프로그램에서사용하는 외부 요소를 Resource라고 합니다. Texture를 구현하기 위해 우선 Resource 필터를 만들고그 안에 CRes 클래스를 만듭니다. wstring형 멤버 m_strKey는Texture의 키-값을 나타내는 문자열입니다. 해당 Resource만의 고유한 ID라고 생각하면 됩니다.  wstring형 멤버 m_strRelativePath는상대 경로입니다. 만약 어떤 게임을 다운로드했습니다. "Aatrox.ko_KR.wad.png"라는 Texture가 존재한다고 해 봅시다. 해당 Texture가 있는.. 2024. 7. 13.