YOURADVENTURES

Category
아이템: 
포스트 갯수6

지형 충돌과 이동에 관한 고찰 3

By Lim's Studio | 2013년 2월 3일 | 
이제 이 항목에 대해서는 거의 마무리를 지은 듯 하다. 그래서 충돌 영역을 생성하는 것 부터 게임에 적용되는 것까지 정리해 보려고 한다. 먼저 충돌 영역의 생성. 충돌 영역을 생성하려면 그림을 그릴 수 있는 도구가 필요하다. 본래는 맵 에디터를 만들어 그 안에서 해결하려고 했는데 좀 무리수였던 것 같다. 그래서 그림판을 이용하여 충돌영역을 생성할 수 있도록 했다. 그리고 그렇게 만든 이미지를 게임에 적용할 수 있도록 변환시켜주는 프로그램도 같이 작성하였는데, 그 프로그램의 의사는 대강 이러하다. 이미지 파일을 읽어온다.이미지의 전체 픽셀을 순회하며 검사를 한다. 이 때 x축에 대해서 블록 생성에 유효한 픽셀이라면 해당 좌표로 충돌 영역(RECT)을 생성한다.이미지의 전체 픽셀을 순회한 후

지형 충돌과 이동에 관한 고찰 2

By Lim's Studio | 2013년 1월 26일 | 
지형 충돌과 이동에 관한 고찰 2
본격적으로 맵에디터를 만들기 시작했기 때문에 빨리 이 문제를 해결해야 겠다고 느껴서 생각을 마무리지었다. 먼저 전체 영역은 다른 알고리즘들에 비해 연산량이 적어서 무리가 없을 것 같아 사각형을 이용해 체크하기로 했다. 또한 블록이 열거되어있는 형태는 한 블록으로 대신해서 비교하도록 만들 계획이다. <반복적인 형태를 하나로> 그리고 경사면에 대해서. 이 부분에 대해서는 미리 블록들을 정해놓고 배치하는 형태로 해보려 한다. 가령, 밑변과 높이가 각각 32px인 삼각형이면 그 위를 지나갈 때 각도는 45도 이므로 캐릭터 방향벡터를 45도로 바꿔주고 다시 평지가 되면 0도로 바꿔주고, 이런식으로 말이다. 또 한가지 주의할 점이라면 이런 경사면은 라인으로 충돌을 처리해야 하는데,

지형 충돌과 이동에 관한 고찰

By Lim's Studio | 2013년 1월 16일 | 
지형 충돌과 이동에 관한 고찰
오늘은 지형 충돌에 대해 생각해 봤다. 처음 생각난 것은 모두 사각형으로 비교해서 충돌하려고 했는데, 그렇게 하면 경사면같은 물체는 이동할 수 없게돼서 포기했다. 또 그 경사면들만 따로 만들어 주자니, 개수에 너무 제한적이었다. 두 번째로 떠오른 것은 사격형과 선분끼리 충돌시키는 것이었다. 캐릭터들은 어차피 사각형 마스크로 비교하니까 그렇게 하면 될 것 같았다. 그래서 캐릭터 마스크 에디터 만들 때 처럼 충돌 선분을 직접 그려서 숫자로 뽑으려고 했는데 이건 알고리즘 짜기가 여간 복잡한게 아니었다. 점끼리 연결상태 파악하기가 쉽질 않았다. 그래서 맵 에디터를 만들면서 그 위에 직접 선분을 그을 수 있게 만들어 버리도록 생각을 해보니 그렇게 하면 될 듯 싶어서 생각은 그 쯤에서 마쳤다.

벡터로 위치이동

By Lim's Studio | 2013년 1월 16일 | 
보통 간단한 이동을 구현한다면, 좌로 이동할 때 x-=1; 아래로 이동할 때 y+=1;처럼 코딩하기 마련이다. 그러니까, if(GetAsyncKeyState(VK_LEFT))x-=1; else if(GetAsyncKeyState(VK_RIGHT))x+=1; if(GetAsyncKeyState(VK_UP))y-=1; else if(GetAsyncKeyState(VK_DOWN))y+=1; 이런식으로 말이다. 그런데 저 말대로 한다면 상하좌우 각각의 4방향 이동은 문제 없겠지만, 4가지 대각선 방향을 이동할 때 약간의 문제가 생긴다. 상하좌우의 경우는 각각 1만큼 움직일 테지만, 대각선은 두 키의 명령이 같이 이행됨에 따라 결과적으로 root 2만큼 움직여 버리는 것이다. 이를