Win32 API44 Win32 API 기초 : Animation (3) 이제 CAnimation 클래스에서 텍스처 정보를 갖고 있고 render 함수까지호출해 주고 있기 때문에 CPlayer 클래스에서텍스처 정보를 갖고 있을 필요가 없고,그렇기에 텍스처를 CPlayer 클래스에서그려줄 필요가 없습니다. CAnimation 클래스에서는 render 함수를 통해 화면상에 텍스처를 그리고 있습니다. 일단 멤버 m_bFinish는 bool형으로 ,멤버 m_vAnimInfo에 저장되어 있는 프레임들이모두 재생되고 나면 true가 되어 모든 프레임이재생되었다는 것을 의미하게 되어 render 함수를빠져나옵니다. 우선은 m_vAnimInfo에 저장되어 있는프레임들을 한 번만 재생하게 할 겁니다. 그래서 m_bFinish가 true가 되면 render를진행하지 않고 빠져나가게 되죠. .. 2024. 9. 1. Win32 API 기초 : Animation (2) 애니메이션을 저장하고 있는오브젝트의 Component인 Animator를 생성해 보겠습니다. 우선 대입을 통해 새로운 오브젝트를 생성한다고 할 때, 인자로 들어온 오브젝트에 애니메이터를 가리키는 멤버 m_pAnimator의 값이 존재한다면 이를 가져와야겠죠. 그래서 34번째 줄에 있는if 문에 들어가면 새로운 동적 할당을 통해 인자로 받은 오브젝트가 갖고 있는 m_pAnimator와 같은 값을 가진 공간을 만듭니다. 그리고 그 공간에 있는 Animator가 새로 생성한오브젝트를 가리키도록 하죠. 오브젝트가 component_render 함수를 통해 컴포넌트를 렌더링할 때, 이제는 m_pAnimator가 가리키는애니메이터 컴포넌트도 render를 해야겠죠. CreateAnimator 함수를.. 2024. 8. 28. Win32 API 기초 : Animation (1) 게임의 중요한 요소인애니메이션을 구현하겠습니다. 오브젝트는 Component인 Animator를 보유하고 있고,Animator는 다양한 Animation을 보유하고 있습니다. 그래서 오브젝트는 애니메이션에필요한 텍스처를 Animator를 통해서 불러오고 움직이는 것처럼 보이게 할 겁니다. 그래서 오브젝트 클래스에 CAnimator형 포인터 멤버 m_pAnimator를두어 Animator를 가리킬 수 있게 합니다. CAnimator 클래스는 map형 멤버 m_mapAnimation를두어 키-값이 문자열이며실질적인 데이터는 CAnimation을 가리키는 포인터인 여러 노드들을 관리할 것입니다. 그리고 CreateAnimation 함수를 통해애니메이션을 추가하거나, FindAnimation 함수를통해 .. 2024. 8. 19. Win32 API 기초 : Object (1) 기존에 존재하는 오브젝트와똑같은 오브젝트를 만드려고 하면기본 복사 생성자를 통해 새로운오브젝트가 생성이 될 겁니다. 하지만 그럴 경우 문제가 될 수 있는 점은, 다른 멤버들은 괜찮지만Collider를 가리키고 있는 멤버m_pCollider의 값이 그대로 복사가 되면, 아래 그림처럼 서로 값만 같고 실제로는 다른 두 오브젝트가하나의 Collider를 공유하는 상황이 발생하죠. 이를 방지하기 위해 오브젝트의복사 생성자를 직접 구현해야 합니다. 직접 구현한 CObject 클래스의 복사 생성자를 보시면 위칫값이나 크깃값, 오브젝트의 이름은그대로 복사를 진행하고 Collider는 우선 nullptr로 초기화를 진행한 후, 새롭게 동적 할당한 공간에인자로 받은 오브젝트의 Collider와 같은 값을 가진Coll.. 2024. 8. 18. Win32 API 기초 : Scene (1) 시작 씬에서 Enter를 누르면Tool 씬으로 전환하도록 할 겁니다. 그러기 위해선 CScene_Start 클래스에update 함수를 오버라이딩하여 새롭게 구현해야 합니다. 자식 클래스의 update 함수에서도부모 클래스인 CScene 클래스의 update 함수를실행하고 거기에 if 문을 더 추가하여 Enter를 입력할 시 ChangeScene 함수가호출되는 방식이죠. Tool 씬을 인자로 넣습니다. ChangeScene 함수 역시, 전역 함수처럼 사용하기 위해func 헤더 파일과 소스 파일에 구현하였습니다. tEvent형 변수 even의 멤버 eEvent에는 씬 변경 이벤트임을 나타내기 위해 CHANGE_SCENE를 대입,멤버 lParam에는 어떤 씬으로 변경할지를 나타내기 위해인자로 받은 씬의 .. 2024. 8. 18. Win32 API 기초 : Event Manager (3) 플레이어의 발사체와 몬스터가 충돌하면몬스터가 화면 상에서 제거되도록 하겠습니다. CObject 클래스에 존재하는 OnCollisionEnter 가상 함수를 CMissile 클래스에서 오버라이딩하여 구현합니다. 인자로 받은 Collider형 포인터 _pOther가 가리키는 Collider가 달려있는 오브젝트를 pOtherObj가 가리키도록 합니다. pOtherObj가 가리키는 오브젝트의 이름이"Monster"라면 발사체 자기 자신을 제거하도록DeleteObject 함수를 호출하고 자기 자신을 인자로 넘깁니다. DeleteObject 함수는 전역 함수처럼 사용할 수 있는 오브젝트 제거를 위한 함수입니다. tEvent형 지역 변수 even의 멤버 eEvent에DELETE_OBJECT 이벤트로 설정하고lPar.. 2024. 8. 16. 이전 1 2 3 4 5 ··· 8 다음