목록DirectX2D (55)
응애맘마조
오늘도 과제 풀이가 강의 내용이 되었습니다. 슬라이드 퍼즐을 만들었습니다. (코드는 다음 게시글에 올리겠습니다.) 이미지 자체에 포인터를 사용하고 2차원 배열에 포인터를 2개 사용해서 *이 3개가 되었습니다. ObImage*original; ObImage***puzzle; 오른쪽에 원본 이미지를 놓고 왼쪽에 섞을 퍼즐을 준비했습니다. 이후에 동적 할당 new로 받으면서 포인터(*)가 하나씩 없어집니다. 다음 게시글에서 뵙겠습니다. https://keisukeaso.tistory.com/87 읽어주셔서 감사합니다.
오늘부터 UV에 대해 시작했습니다. 이미지는 항상 사각형 모양입니다. (원형 이미지는 주변에 사각형으로 비어있는 칸이 있고 그 안에 원형 이미지가 있습니다.) 이미지마다 차이점이 있는데 해상도와 픽셀입니다. UV좌표는 이미지에만 있는 좌표계입니다. 정점은 사각형처럼 4개입니다. 코드 내에서 함수로 크기를 조정해도 잘리지 않고 그 크기에 맞는 비율로 맞춰집니다. 또한 최소 좌표와 최대 좌표를 사용하기 때문에 Vector4를 사용합니다. 모양이나 객체에 텍스처 이미지를 붙이는 것을 텍스처매핑이라고 합니다. ObImage도 GameObject와 같이 자원을 사용하여 처리 후 VS로 넘어갑니다. 이동모션을 전부 이미지로 나타낸 것을 스프라이트라고 합니다. 각자 잘라서 이미지를 빠르게 교체해 실제 움직이는 것 같..
제가 과제 해결을 못해서 늦었지만 과제풀이가 오늘의 수업이었습니다. GetTick()으로 해서 초 단위를 추가할 때는 DELTA를 더하면 됩니다. 만약 초를 다시 0으로 맞추려면 0으로 초기화하지 말고 DELTA에 더했던 값을 빼는 것이 좋습니다. (오차를 없애기 위해서입니다.) STL(Standard Template Library)은 표준 템플릿 라이브러리입니다. vector는 동적 배열이라서 가장 대표적으로 사용합니다. deque는 시작과 끝에서 삽입 및 삭제가 가능합니다. iterator는 반복자입니다. interval은 간격입니다. 이 변수 이름으로 과제를 풀면서 강의가 진행 되었습니다. 이번 강의에서 잔상을 만들어서 뱀처럼 늘리는 것이 과제였습니다. (다음 게시글에 올리겠습니다.) 특히 대시를 ..
회전된 오브젝트에 대한 충돌 처리를 배웠습니다. 점(마우스 커서)이나 원은 회전을 해도 똑같은 모양이지만 사각형은 다르기 때문에 사각형에 대한 오브젝트에 대해서만 신경 쓰면 됩니다. 하는 방법은 회전된 오브젝트에 대해서 축을 다시 정렬 합니다. 회전 하기 전 SRT의 S(scale)까지만 계산하고 역행렬(1 / RT)을 곱해서 재정렬을 합니다. 그렇게 하면 단위 행렬이 나오게 됩니다. (충돌 처리를 확인하는 오브젝트에 대해 모두 재정렬을 해야됩니다.) 이렇게 하면 충돌 처리가 되는 것처럼 보이지만 사실 영점에서 가상의 충돌체를 만들어서 충돌 처리를 하는 것처럼 보이는 것입니다. 사실 사각형보다도 이외의 다각형에 대한 충돌 처리도 있을 수 있습니다. 물론 구현한다면 가능하겠지만 코드도 길어지고 비용도 많이..
어제는 점과 오브젝트의 충돌에 대해서 배웠다면 오늘은 오브젝트와 오브젝트 간의 충돌에 대해서 배웠습니다. 충돌처리에도 두가지 방식이 있습니다. AABB(Axis Aligned Bounding Box)는 고정된 축의 오브젝트에 대한 충돌 처리입니다. OBB(Oriented Bounding Box)는 방향성(회전된)을 가진 오브젝트에 대한 충돌 처리입니다. OBB는 내적을 사용해서 충돌 처리를 합니다.(3D에서는 외적도 축에서 사용하지만 2D에서는 사용하지 않으므로 넘어가겠습니다.) 내적 함수는 Dot() 함수를 사용합니다. OBB를 하는 방법은 먼저 투영시켜서 충돌인지를 판정합니다. 투영시켜서 나온 값들을 전부 더합니다. 그래서 두 오브젝트간의 중점간의 길이를 더하고 투영시킨 값의 길이를 비교합니다. (중..