분류 전체보기(227)
-
Animation- Component
한달전에 unity 용도로 만든 파일을 win32api 프로그램에서 적용하기 위해서 64x64 pixel 크기를 bmp 파일로 만들었다. 먼저 애니매이션을 적용하기 위해서 파일을 프로그램내에서 잘라주는 코드를 작성했다. 그후에는 애미네이션 클래스를 만들어서 한칸 한칸을 애니매이션 객체를 만들어서 애니매이터 컴포넌트가 관리 가능하게 했다. animator 는 애니매이션을 관리한다. 아직까지는 처음 9칸을 잘라서 idle 상태만 구현했다.
2023.01.02 -
충돌 디버깅
위의 영상은 플레이어가 객체가 한 개처럼 보이지만 실제로는 2개가 겹쳐있는 형태이다. 만약 플레이어가 미사일을 발사하면 똑같은 속도로 겹쳐서 날아가는데, 이때 몬스터 객체와 충돌한 시점에서 버그가 발생한다. 왜냐하면 2개의 플레이어 미사일이 같은 프레임 내에서 같은 몬스터 객체와 충돌한 시점에 몬스터의 HP가 0이 되면 EventMgr에 몬스터 객체를 2번이나 삭제 요청을 하게 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 void CEventMgr::Excute(const tEvent& _eve) { switch (_eve.eEven) { cas..
2023.01.01 -
충돌
영상에서 처럼 플레이어 미사일과 사각형간의 충돌을 계산하여 한번 충돌할때 마다 사각형의 HP가 1씩 줄어들게 설정하여 사각형의 HP가 0이되면 삭제하게 설정하였다. 1 2 3 4 5 6 7 8 9 10 11 void CMonster::OnCollisionEnter(CCollider* _pOther) { CObject* pOtherObj =_pOther->GetObj(); if (pOtherObj->GetName() == L"Missile_Player") { --m_HP; if (0 >= m_HP) DeleteObject(this); } } Colored by Color Scripter OnCollisionEnter 는 처음 충돌이 발생한 프레임을 기준으로 함수가 발생한다.
2022.12.31 -
union & bit field 로 float 자료형 구현
유니온을 이용해서 처음에 배웠던 float 자료형의 원리를 다시 한번 구현해 보았다. 유니온은 크기가 같은 자료형이 있으면 데이터를 서로 다른 자료형으로 읽을 수 있다. union을 활용하면 long long 자료형을 int 자료형 2개로 구성하면 특정한 조합을 만들 수도 있고 아래의 코드처럼 비트필드와 활용하여 1bit 단위로 자료형을 만들어 float을 분석할 수 있다. 만약에 최상위 비트가 1이면 음수가 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #include struct IEEE { unsigned int Fraction: 23; // 가수 부분 unsigned int Exponent : 8; //..
2022.12.30 -
빙글빙글 도는 오브젝트
오늘 자기전에 구현하고 싶었던 원운동을 하는 오브젝트를 구현했다.
2022.12.29 -
Collider
충돌기능을 구현하기 위해서는 충돌 크기를 설정해야 하는데 실제 게임 할 때는 필요 없지만 디버깅 과정에서는 충돌구역이 표시되면 편리하기 때문에 비행기와 미사일에 충돌구역을 가시화했다. 게임에서 충돌은 어떤 방식으로 구현할까? 충돌을 구현하는 방법으로는 오브젝트에 충돌되는 오브젝트와 충돌하지 않는 오브젝트를 설정하여 상속하는 방법도 있지만 이 방법으로는 예외상황을 처리하는데 어려움이 있기 때문에 컴포넌트 구조를 활용하면 좋다 컴포넌트 구조는 장착하고 해제하는 방식으로 오브젝트가 충돌 컴포넌트를 포함하면 충돌하는 방식이다. 각각의 오브젝트에서 대해서 충돌을 계산하면 연산이 과정이 길어지므로 같은 구성원끼리는 충돌하지 않는 방식으로 설계를 했다. 이러식으로 설계를 하면 새로운 씬에 들어갈 때 각각의 오브젝트그..
2022.12.28