하나를 꺠우치면 열 혹은 그이상을 꺠우칠수있는 응용력이필요합니다...
그런고로 응용법을 생각해봅시다~

아래의 그림을 보면 '스트리트파이터4'라는 게임의 스크린샷인데
춘리라는 게임캐릭터가 공격을 시도하는 장면인데요. 이것을 가지고 예를 들어 설명해보겠습니다.
물론 스트리트파이터4는 3D로 제가 설명하는 방식의 충돌체크를 사용하지않습니다..
그리고 대부분의 2D격투게임들은 바운딩박스라는 방식으로 충돌체크를 합니다.
사용자 삽입 이미지
밑에 사진을 다시 보시면 원으로 충돌 체크를 할시에 필요한 원들이 보입니다.
부위별로 상하좌우 방어 공격 등등의 상태값을 가지겟죠. 그런데 이많은 원들을 항시로 체크해줄려면
프레임소모가 심합니다.
예를들면 충돌원을 1000개씩 가진 캐릭터가 떨어져있어도 1000000번의 충돌연산을 하게됩니다.
그런고로 아래사진처럼 가장큰원을 하나씩 잡고 충돌시 하위 계층의 충돌원과 충돌연산을 시켜주면됩니다.
사용자 삽입 이미지

한번 응용해봅시다.그래픽 불러오기 귀찮고 리소스생산해내기 귀찮으므로 원두개로 딸랑만들수있는 눈사람을 만들어보았습니다.
그리고 충돌체크시 충돌검사하는 갯수를 받아서 화면에 찍어주게하였습니다.



사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지
[##_kaAmo_##]
Posted by 랜스.

Leave your greetings here.

  1. Comment RSS : http://lancekun.com/tc/rss/comment/28
  2. 알콜코더 2009/03/05 10:24  Modify/Delete  Reply  Address

    스파4같은 격투게임은 바운딩 스피어의 충돌안에서 또다시 폴리곤 충돌까지 계산하죠. ^^

    • 랜스 2009/03/06 03:51  Modify/Delete  Address

      오호 ~ 그렇군요!! 바운딩스피어검출방법도 그리 어려운게 아닌데 D3D로 스피어2개뛰어 놓고 한번 해봐야겠습니다>_<

  3. cretom 2009/03/12 18:51  Modify/Delete  Reply  Address

    스파4는 개발 초기엔 일반적인 3D게임(ex:철권)처럼 3차원적으로 판정을 했지만
    후기에 가선 2D게임이였던 시절의 느낌을 살리기 위해 2차원 처리로 바꾸었다고 하네요..
    일반적인 3D게임의 경우는 알콜코더님의 말씀이 맞습니다.

중고등학교 수준의 수학을 공부하고도 사실 구현해내는 방법을 잘몰랐지만
다시한번 책을 보면서 생각해보니 "접한다","겹친다" => "충돌한다" 였던것이다.

그런고로 오늘은 원과 원의 충돌에 대해 구현을 해보았다.


bool isCollision(Circle* m1,Circle *m2)
{
 중점사이의거리= (float)sqrt((float)((m2->x-m1->x)*(m2->x-m1->x))+((m2->y-m1->y)*(m2->y-m1->y)));
 if(m1->r+m2->r>=중점사이의거리)
  return TRUE;
 else
  return FALSE;
}


사용자 삽입 이미지
사용자 삽입 이미지
사용자 삽입 이미지

















[##_kaAmo_##]
Posted by 랜스.

Leave your greetings here.

1년전쯤 잠실역에 직거래하러갔다가 레브님을 만나서 레브님꼐 돈을 꿔서 산책...

하루에 한단원씩 2주내로 끝내야겠다!!
[##_kaAmo_##]
Posted by 랜스.

Leave your greetings here.

  1. Comment RSS : http://lancekun.com/tc/rss/comment/25
  2. 닭도난다 2009/03/01 01:03  Modify/Delete  Reply  Address

    저도 보긴 했는데 ㅎㅎ 어느정도 기초가 있다면 금방 금방 이해하고 나갈수 있는 내용들.
    심화 있게 볼려면 게임 물리 바이블 등등 이런 책들도 읽어 보는것도 좋을듯 ㅎ

    • 랜스 2009/03/03 05:07  Modify/Delete  Address

      흐음 4장까지봤는데 제가 기본고등학교 수준도않되네요 ㅠㅠ ; 그냥 요점정리에 요점정리를 한듯한 느낌... 한번 쏵훑고 딴거해야지...