공부 좀 해라★彡/DirectX22 크아 모작 10일차 이제 Bubble이 터질때 생성되는 Wave를 만들어주자 Wave를 잡는데 좀 오래 걸렸다; #pragma once class Wave : public GameObject { private: const string PATH = "ResourcesCA/Textures/Bubble/"; const int MAX_POWER = 5.0f; public: enum State { START, END }; enum Direction { R, L, U, D }; public: Wave(); ~Wave(); void Update(); void Render(); void CreateActions(); void Spawn(const Vector2& pos, Direction direction = R ,State state .. 공부 좀 해라★彡/DirectX 2024. 4. 19. 크아 모작 9일차 이제 물풍선을 만들어 볼것이다. BubbleManager을 만들어서 Bubble을 Pooling을 할것이다. 왜냐하면 물풍선 놓을때마다 생성하면 효율이 떨어질거 같아서 돌려서 쓰려고 한다. 대강 잡은 BubbleManager #pragma once class BubbleManager : public Singleton, public PoolingManager { private: friend class Singleton; const UINT POOL_SIZE = 50; BubbleManager(); ~BubbleManager(); public: void Render(); void Update(); public: Bubble* Collision(string key, Collider* collider); pub.. 공부 좀 해라★彡/DirectX 2024. 4. 19. 크아 모작 8일차 이번엔 앞에 장애물이 있으면 플레이어가 못가게 하는게 목표다. 일단 보면 GameScene에서 장애물블럭이 1이 나오게 해야한다. ObjTile 추가할 때 Type을 바꿔준다. 그러고 타일과 플레이어의 콜라이더를 체크해서 장애물이면 못지나가게 한다. PushPlayer라는 함수를 만들어주자 Player에서 호출해주고 PushPlayer을 작성해보자 . . 콜라이더 처리는 AABB충돌처리로 하고 겹치는만큼 이동해주면 된다. overlab변수 선언 해주고 겹치는 부분에 y가 x보다 더 넓으면 좌우 충돌이고, x가 y보다 넓으면 상하 충돌이다. 따라서 이걸로 상하좌우 충돌은 나눠주고 Position으로 두객체 중 누가 더 오른쪽에 있는지 확인하면 왼쪽에서 충돌했는지 오른쪽에서 충돌했는지 알 수 있다. 마찬가지.. 공부 좀 해라★彡/DirectX 2024. 4. 19. DirectX 충돌처리 AABB , OBB Axis Aligned Bounding Box 축으로 정렬로 회전을 안한 상태로 충돌처리 Object Bounding Box 회전된 그대로 콜라이더 처리 위에 이미지대로 생각하면 이해하기 쉽다. 게임 안에서 회전이 없는 객체들은 AABB로 충돌처리 하면 되고 회전이 있으면 OBB로 해야한다. bool RectCollider::IsAABB(RectCollider* rect, Vector2* overlap) { float left = max(Left(), rect->Left()); float right = min(Right(), rect->Right()); float bottom = max(Bottom(), rect->Bottom()); float top = min(Top(), rect->Top()); ov.. 공부 좀 해라★彡/DirectX 2024. 4. 17. 크아 모작 포폴 - 7일차 드문드문 적은게 있었는데 날라가버리기..~ ๑•́ㅿ•̀๑) ᔆᵒʳʳᵞ 7일차부터 꾸준히 적어보자!!! ^^♪ 오늘은 타일쪽을 먼저 제대로 해놔야겠다는 생각이 들었다... Tile을 세팅해두고 Render따라서 플레이어 보다 위에 있기도하고 아래있기도 하다. 그럼 누가누가 더 위에 있나 Depth깊이를 따져야하는데 ! 어떤 타일은 Player보다 위에고 어떤건 아래고 ... 그래서..! RenderManager을 만들었다. 공부 좀 해라★彡/DirectX 2024. 4. 16. DirectX 2D 타일 맵 깔기 일단 옆에 버튼들 부터 생성시켰다. ~,Render,Update,UpdateWorld 함수들한테 다 넣어준다. count해서 이미지 파일명에 맞춰서 설정해줬다. 첨에 10 이하의 숫자는 0을 안붙여서 안나와서 당황스! if문 하나 만들면 된당 ㅎ 이미지 파일이 너무 커서 스케일을 주었다. 이제 클릭 이벤트를 준다 해당 버튼 번호를 주고 인덱스므로 -1 해준다 -1한 인덱스를 넣어도 되고 뭐 자유.. count도 원래 안세고 (x+1)*(y+1) 했엇는데 그냥 count가 편한거 같음 이중 포문으로 안하면 될거 같은데.. 일단 고 이렇게 텍스쳐를 받아서 changeTex에 넣어준다. 그 다음 Update 에서 타일을 클릭하면 텍스쳐를 바꾸게 해줬다. 그럼 원하는대로 된다 ! 주요코드 ↓ //EditTile.. 공부 좀 해라★彡/DirectX 2024. 4. 5. DirectX 2D 외곽선 쉐이더 만들기 이번의 목표!! 는 객체 5개 정도 출력해서 마우스 올려 놓은 객체 외각선 출력하기 일단 외곽선 픽셀 쉐이더를 반환해주는 Outline()을 만들어준다. 처음엔 대략 블러 퍼와서 평균값 알파가 0과 1 사이에 있으면 0과 1 둘다 있다고 생각했다. 그래서 받은 값을 float2로 바꿔주고 출력도 검정이 아니면 해당 값으로 나오게 해줬다. 이상하다 생각해서 그냥 구조를 바꿨다. 8방면에서 0과 1이 있는지만 확인 하면 되므로 bool값으로 두개를 설정해서 있으면 트루로 되게 하고 이 두 값을 비교하여 반환되게 하였다. 반환 값은 귀엽게 노랑색으로 바꿔주기~~ 해당 쿠키를 class로 만들어 valueBuffer도 각 개체마다 관리하도록 해줬다. collider를 사용하여 마우스랑 충돌 처리를 해줄 것이다... 공부 좀 해라★彡/DirectX 2024. 4. 3. DirectX 2D Effect만들기 기존 BulletManager랑 비슷하게 EffectManager을 만들어준다. Effect도 똑같이 생성해준다. #pragma once class EffectManager : public Singleton, public PoolingManager { private: friend class Singleton; const UINT POOL_SIZE = 50; EffectManager(); ~EffectManager(); public: void Play(string key, const Vector2& pos, const Vector2& direction = {0.0f, 0.0f}, float speed = 1.0f); }; Effect는 따로 Fire 할 필요 없어서 Play로 만들었다. #pragma on.. 공부 좀 해라★彡/DirectX 2024. 4. 1. DirectX 2D 맵 에디터 - Floor 저장, 로드, 삭제 더보기 기본파일 Floor을 저장 로드를 할거면 제일 먼저 ImGui에 버튼을 생성해준다. 우리의 저장 로드는 태그로 저장 되므로 Floor 생성할 때 태그를 설정해준다. 그 다음 저잘 할때 Floor.data를 읽고 Floor생성할 때 필요한 것들은 봐준다 위에 보면 Add에 pos랑 textureFile을 받아주니까 해당 정보들만 저장해서 로드 하면 되줄거다 Vector2 저장하는 법을 모르므로 x랑 y따로 저장해줌 -> 순서 중요! 이렇게 되면 저장과 로드는 잘되는 것을 볼 수 있다 ㅎ ㅎ ㅎ 지우는 것을 생각하니까 FloorManager한테 Mode로 나뉘어서 하면 어떨까 싶어졌다. 이에 맞는 함수를 미리 생각해 보았다. ImGui에 버튼을 생성해주고 누를때 mode를 변경해주고 그에 맞는 함수를.. 공부 좀 해라★彡/DirectX 2024. 3. 29. DirectX 2D 파일로 정보를 읽고 내보내기(저장) (ว˙o˙)ว 더보기 #pragma once class BinaryWriter { public: BinaryWriter(string filePath); BinaryWriter(wstring filePath); ~BinaryWriter(); void Int(int data); void UInt(UINT data); void Float(float data); void String(string data); void WString(wstring data); void Byte(void* data, UINT dataSize); private: HANDLE file; DWORD size = 0; }; #include "Framework.h" BinaryWriter::BinaryWriter(string filePath) { file.. 공부 좀 해라★彡/DirectX 2024. 3. 22. DirectX 2D 글씨 띄우기 더보기 DirectX 는 글씨를 띄우는게 힘들어서 따로 쌤한테 받았다.. //Font.h #pragma once class Font : public Singleton { public: Font(); ~Font(); void AddColor(string key, float r, float g, float b); void AddStyle(string key, wstring font, float size = 20.0f, DWRITE_FONT_WEIGHT weight = DWRITE_FONT_WEIGHT_NORMAL, DWRITE_FONT_STYLE style = DWRITE_FONT_STYLE_NORMAL, DWRITE_FONT_STRETCH stretch = DWRITE_FONT_STRETCH_NORMAL).. 공부 좀 해라★彡/DirectX 2024. 3. 21. DirectX 2D인벤토리 만들기 탕탕특공대 리소스를 찾아가 일단 기본 프로젝트에 플레이어, 체력바,에너미 맵을 바꿔주었다. 꽤 시간이 ^^ 걸림 ㅜㅋ 일단 잡아야할 문제는 (1시간 컷 하쟈하쟈) 1. 장착 아이템을 사용자 class로 옮겨주기 (현재 inven)이 가지고 있음 2. 사용자가 아이템을 가지고 있으면 다시 먹기 금지 3. 사용자 능력 추가 -- 시간 남으면 exp 생성, exp바, stage 복습! 1. 장착 아이템을 사용자 class로 옮겨주기 (현재 inven)이 가지고 있음 현재 inven인테 equipItems만 옮겨주면 될거 같다. 옮겨 주고 저 변수를 썻던 inven에서 Plane을 참조 할 수 있으므로 Get 해주면 된다. 근데 오류 발생.. InvenManager가 생성되는게 처음 Scene호출 할때다 보니까.. 공부 좀 해라★彡/DirectX 2024. 3. 19. 이전 1 2 다음