디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

DX 2D비행슈팅강좌 18. 충돌박스 표시

Vita500갤로그로 이동합니다. 2009.07.22 21:07:27
조회 460 추천 0 댓글 0




===== DX 2D비행슈팅강좌 ======
===== 18. 충돌박스 표시 =====
충돌박스를 넣었으면, 어디가 충돌영역인지 확인할수있어야 한다.
사각형으로 그려서 그 영역을 표시해준다.
Tab을 누르면, On/Off할수있다.


1. 애니메이션의 키이미지 변수를 만든다.
2. GameBase에 추가된 변수
3. 메모리에 흰 텍스쳐생성
4. 충돌영역 그리기






1. 애니메이션의 키이미지 변수를 만든다.
VOID Character::setAnimation(const ImageVec2* vImage)
{
        _vImages = *vImage;

        _pAni_Key = _vImages[0][0];
}


배열로 접근하면, 너무길어 코드를 읽기가 힘들다.
그래서, 현재의 보여줄 이미지를 받아둔다.
코드중간중간에도 이런식으로 대치되어 사용된다.








2. GameBase에 추가된 변수
static BOOL _bBound_visible;
static LPDIRECT3DTEXTURE9 _pWhite_texture;

충돌박스 그릴여부를 체크하는 변수와 흰색텍스쳐변수가 추가되었다.






3. 메모리에 흰 텍스쳐생성
D3DXCreateTexture(_pd3dDevice, 2, 2, 1, NULL, D3DFMT_A8R8G8B8, D3DPOOL_MANAGED, &_pWhite_texture);

D3DLOCKED_RECT rcLock;
_pWhite_texture->LockRect(0, &rcLock, NULL, D3DLOCK_NO_DIRTY_UPDATE );
DWORD* pColor = (DWORD*)rcLock.pBits;
*(pColor+0) = 0xffffffff;
*(pColor+1) = 0xffffffff;
*(pColor+2) = 0xffffffff;
*(pColor+3) = 0xffffffff;
_pWhite_texture->UnlockRect(0);

메모리에 2x2크기의 텍스쳐를 만든다.
그리고, 주소를 얻어와서 흰색으로 채우고, 락을 해제한다.
이것을 사용하여, 충돌박스영역을 그리게 된다.







4. 충돌영역 그리기
if ( !_bBound_visible) 
        return;


static RECT rcSource = {0,};
static D3DXVECTOR3 vCenter(.0f, .0f, .0f);
static UINT uSize = 0;


if ( !_vBoundBox.empty() )
{
        uSize = _vBoundBox.size();

        for (UINT i=0; i<uSize; ++i)
        {
                rcSource.right = LONG(_vBoundBox[i]->RB.x - _vBoundBox[i]->LT.x);
                rcSource.bottom = LONG(_vBoundBox[i]->RB.y - _vBoundBox[i]->LT.y);
                _pSprite->Draw( _pWhite_texture, &rcSource, &vCenter, &_vBoundBox[i]->LT, 0x50E74280 );
        }
}
else 
{
        uSize = _pAni_Key->BoundBox.size();

        for (UINT i=0; i<uSize; ++i)
        {
                rcSource.right = LONG(_pAni_Key->BoundBox[i]->RB.x 
                                                - _pAni_Key->BoundBox[i]->LT.x);
                rcSource.bottom = LONG(_pAni_Key->BoundBox[i]->RB.y
                                                - _pAni_Key->BoundBox[i]->LT.y);

                _pSprite->Draw( _pWhite_texture, &rcSource, &vCenter,
                                                &_pAni_Key->BoundBox[i]->LT, 0x50E74280 );
                

        }

}

_bBound_visible값이 TRUE이면, 충돌박스영역을 그린다.
Character에 충돌이 있으면, 그것을 그리고, 없으면, 이미지의
충돌박스영역을 그린다.
만약, 충돌박스 영역이 없으면, 아무것도 그리지 않는다.
충돌박스영역의 좌표를 가지고 와서 그린다는것을 빼면,
어려운 내용은 없다.
다만, 변수명이 길어서 글자를 보기가 어려울뿐이다.

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 끝까지 다 본 걸 후회하게 만든 용두사미 드라마는? 운영자 25/07/07 - -
271372 천재해거는 천재다 Adelposs갤로그로 이동합니다. 11.09.11 37 0
271371 버퍼오버플로우 [1] 버퍼링(121.186) 11.09.11 43 0
271370 jsp나 css는 자기가 디자인하고 눈에 금방 보이니까 재밌내 ㅋㅋ [2] 허세강갤로그로 이동합니다. 11.09.11 79 0
271369 형들 생일축하좀 해줘 [7] ,.,.,갤로그로 이동합니다. 11.09.11 43 0
271368 만약 실행파일을 리버싱하는게 [14] 로하로하알로하갤로그로 이동합니다. 11.09.11 159 0
271367 변태들아 Adelposs갤로그로 이동합니다. 11.09.11 24 0
271366 야 적어도 남자라면 컴터정돈 혼자 조립할줄 알아야지. 쵸쵸(219.251) 11.09.11 39 0
271365 다나와에서 컴터 자주사시는분 도움좀 주세요ㅠㅠ [4] ㅇㅇㅇㅇ(122.37) 11.09.11 52 0
271364 천재해커 몇살먹었는데 아직도 빌빌대냐? 쵸쵸(219.251) 11.09.11 49 0
271363 진심인지, 빈말인지도 구분을 못하고 위트도 없는 녀석들 같으니... [7] 천재해커(59.14) 11.09.11 96 0
271362 엑스박스나 플스를 사서 집에 가져오면 [3] 거칠게갤로그로 이동합니다. 11.09.11 52 0
271361 기본은 중요하지 않다. [8] 천재해커(59.14) 11.09.11 118 0
271360 시스템 프로그래머, 임베디드 프로그래머 쪽은 대우가 좋은편인가? [2] 시민큐(121.160) 11.09.11 164 0
271359 알시리즈 프로그램만 지워도 컴퓨터 빨라진다는게 로레알? [4] ㅇㅇㅇ(121.144) 11.09.11 111 0
271358 버쳘박스에서 안드로이드 x86 아수스변형 2.3.3깔었는데 [7] 마타버터갤로그로 이동합니다. 11.09.11 102 0
271357 녀석들 태평하구나. [1] 천재해커(59.14) 11.09.11 55 0
271356 요즘은 코딩만 잘해서는........ [2] 마타버터갤로그로 이동합니다. 11.09.11 99 0
271355 AVD에서 왜 허니콤이 진저브레드보다 느림 [4] 마타버터갤로그로 이동합니다. 11.09.11 75 0
271354 기본이 중요하다. [2] Deskjet(58.225) 11.09.11 111 0
271353 li margin-left chrome에서 안먹히는거 어떻게 해결하는지 아시나염 [3] 늅늅(112.162) 11.09.11 42 0
271350 학부생들은 DirectX같은거 배움?;; noname(211.200) 11.09.11 70 0
271349 프로그래밍이 취미로 하기엔 딱이다. 쵸쵸쵸(219.251) 11.09.11 58 0
271348 야 너희들은 내가 만약 [1] Adelposs갤로그로 이동합니다. 11.09.11 37 0
271346 기분 좋은 추석 전날 html이나 해야지 [1] 로하로하알로하갤로그로 이동합니다. 11.09.11 32 0
271344 독학vs학원 [2] 의료_인갤로그로 이동합니다. 11.09.11 106 0
271343 노트북이 사망해서 외장 하드케이스에 끼웠다 거칠게갤로그로 이동합니다. 11.09.11 52 0
271342 아무 곳에나 이력서 뿌리지 마라. [1] 천재해커(59.14) 11.09.11 106 0
271341 컴고수님들질문점 [2] d(218.37) 11.09.11 39 0
271340 윈도우 리눅스 멀티부팅 어제 물어봤는데 [6] sdf(92.231) 11.09.11 111 0
271339 횽아들 동생들 이력서 쓸때 공익짜잉갤로그로 이동합니다. 11.09.11 93 0
271338 간만에 기본적인건데... [1] 공익짜잉갤로그로 이동합니다. 11.09.11 54 0
271336 프갤 님들은 브라우저 뭐써요? [3] 1(125.135) 11.09.11 68 0
271334 파이썬 늅늅인뎅 [3] 응헷(175.116) 11.09.11 85 0
271333 기계공학과 갈까요 컴퓨터공학과 갈까여 ㅡㅡ [7] 1(125.135) 11.09.11 233 0
271332 버쳐박스로 안드로이드 깔었는데 [3] 마타버터갤로그로 이동합니다. 11.09.11 85 0
271331 연합 IT 벤처 창업 동아리 S.O.P.T 모집합니다. [3] 솝트(125.186) 11.09.11 599 0
271330 비주얼 스튜디오 2010에서 프로젝트가 저장되는 폴더의 경로를 바꾸려면? [3] 새롬이(121.171) 11.09.11 152 0
271329 음.. 추석잘보내 프갤러들아.. [4] 독담갤로그로 이동합니다. 11.09.11 62 0
271328 어떡해횽은 봅미다 [4] 땡칠도사갤로그로 이동합니다. 11.09.11 82 0
271327 엔고가 일본에서는 살기에는 유리한듯 [1] YesMan갤로그로 이동합니다. 11.09.11 77 0
271326 오늘의 과제는 끝이 났습니다. [5] 독담갤로그로 이동합니다. 11.09.11 95 0
271325 안초심님 궁금증을 듣고 제 소스에서 return 0; 을 빼 보았습니다. [2] IUV갤로그로 이동합니다. 11.09.11 54 0
271323 getchar(); 랑 return 0; 의 차이가 뭔가요...? [16] 안초심갤로그로 이동합니다. 11.09.11 142 0
271322 아오... 터미널 완성시켜야되는데... [2] 땡칠도사갤로그로 이동합니다. 11.09.11 68 0
271321 나도 이런시절이 있었지 ㅠ-... [4] 꿀레(14.33) 11.09.11 102 0
271320 감사합니다 ㅠㅠ 성공해씁니다 [2] 안초심갤로그로 이동합니다. 11.09.11 49 0
271319 물론 대학이 전부는 아니지만 [5] 늅늅늅늅(180.71) 11.09.11 95 0
271318 이렇게 쓰면 10점만점중에 10점 줄거같음?? [6] 독담갤로그로 이동합니다. 11.09.11 106 0
271316 꿀레횽님 호..혹시 [4] 독담갤로그로 이동합니다. 11.09.11 54 0
271315 명령프롬프트 뜨고나서 바로꺼지는데 어케해야함 ..? [5] 안초심갤로그로 이동합니다. 11.09.11 84 0
뉴스 YG, 블랙핑크 콘서트 ‘좌석 논란’에 공식 사과…“불편 드려 죄송” 디시트렌드 07.08
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2