개인공부(212)
-
Camera
카메라 매니저를 추가하여 키보드 방항키와 마우스로 시점을 조절할 수 있도록 설정했다. 나중에 게임을 만들때는 카메라 시점을 설정해서 다양한 효과들을 만들 예정이다.
2023.01.03 -
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