디시인사이드 갤러리

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

갤러리 본문 영역

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

Vita500갤로그로 이동합니다. 2009.07.22 21:07:27
조회 457 추천 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/06/30 - -
AD 휴대폰 바꿀까? 특가 구매 찬스! 운영자 25/07/02 - -
266993 곰돌이 한마리. [5] 헛소리갤로그로 이동합니다. 11.08.26 115 0
266992 룸망주하니까 생각나네, 어느 룸망주의 흔한 ㅅㅅ일기 [6] SuCo갤로그로 이동합니다. 11.08.26 635 0
266991 야이 샛퀴들아 내가 논산훈련소 26연대 몇기인지는 아냐? [11] 유리한갤로그로 이동합니다. 11.08.26 139 0
266990 멀티쓰레드에서 '데드락' 이랑 'starvation' 차이점이 뭐야? [34] 뉴비P/G(211.183) 11.08.26 4239 0
266988 컴돌이의 문제점 [7] 유리한갤로그로 이동합니다. 11.08.26 170 0
266985 원주비행단 시설 좋았슴꽈?! 친척이 원주에살아서 원주 생각중임돠 [2] 돌고래스피커갤로그로 이동합니다. 11.08.26 115 0
266984 솔직히 까고 제 하루 공부시간은... [6] 컴돌이(180.227) 11.08.26 108 0
266983 한국 소프트웨어의 핵심은 프갤에 있다고본다. [3] 꿀레(115.95) 11.08.26 98 0
266982 아 시발 쌍커플이 뭐냐고 유리한갤로그로 이동합니다. 11.08.26 73 0
266981 공비 오빠야는 봅니다. [4] iljeomobolt갤로그로 이동합니다. 11.08.26 253 0
266979 사회봉사에 아는애 한명도 없으면 좆됨? 123456(121.135) 11.08.26 41 0
266978 여기서전문학교 [3] 호솽갤로그로 이동합니다. 11.08.26 109 0
266977 공군은 간수치 검사한대서 술도 못마시러나가고 [7] 돌고래스피커갤로그로 이동합니다. 11.08.26 178 0
266975 우수한 프로그래머는 항상 동료의 아이디어를 가로챌 준비가되어있어야한다 [2] ㅇㅇ(61.77) 11.08.26 96 0
266974 공비는 봅니다. [6] 돌고래스피커갤로그로 이동합니다. 11.08.26 116 0
266972 이런걸로 토론하는 프갤.. 솔찍히 보고 좋다.. 흐믓~ [2] blackd갤로그로 이동합니다. 11.08.26 104 0
266969 블앤소 당첨자 있음?? [3] McHello갤로그로 이동합니다. 11.08.26 61 0
266967 우리동네 참치집에서는 최고급 뱃살이랑 가로구치?참치갈비살덮밥도 주던데 [1] 돌고래스피커갤로그로 이동합니다. 11.08.26 133 0
266966 참치회 먹어봤는데 솔직히 김맛밖에 생각안남 [3] SuCo갤로그로 이동합니다. 11.08.26 55 0
266964 아스트라로테는 지금쯤 참치회 먹는다고 자랑질 쩔어야 할 시간인데.. [2] 쿄스케갤로그로 이동합니다. 11.08.26 100 0
266962 첨부터 안봤더니 끼지를 못하겠네.... ㅋㄱ(183.96) 11.08.26 46 0
266961 솔직히 프로그래머한테 창의력이 필요할까? [4] kirsr(112.151) 11.08.26 112 0
266960 나는 지잡이라 플밍을 못함 [4] DMW(143.248) 11.08.26 103 0
266959 if( 군대 && 만화 ) echo "어이없음..."; [3] blackd갤로그로 이동합니다. 11.08.26 94 0
266958 그냥 컴돌이 논리는 이거네. [63] 유리한갤로그로 이동합니다. 11.08.26 383 0
266956 근데 프갤에는 스마트폰 누구누구 쓰긔? [3] 쿄스케갤로그로 이동합니다. 11.08.26 49 0
266953 제일좋아하는 연예인하고 제일 싫어하는 연예인이나좀 알려주세여 [5] 돌고래스피커갤로그로 이동합니다. 11.08.26 76 0
266952 MSDN 쉽게 해석하려면 토익 몇 점 이상되야함??? [9] 컴돌이(180.227) 11.08.26 124 0
266951 사회봉사 해본 형들 경험담좀~~ [1] 123456(121.135) 11.08.26 53 0
266949 과정보다 결과 [5] kirsr(112.151) 11.08.26 74 0
266948 디버깅 할시 브레이크 포인트관련 질문 [5] 허접게이머(123.142) 11.08.26 88 0
266947 말을 해도 못 알아 들으니 [2] 망함그냥갤로그로 이동합니다. 11.08.26 56 0
266946 요즘보니까 개인서버가 대세던데 하나씩있으면 좋지않을까 [4] ㅇㅇ(61.77) 11.08.26 96 0
266944 내가 MS에 4개월짜리 비정규직으로 갔다가 첫 주에 있었던 일 [4] 분당살람갤로그로 이동합니다. 11.08.26 127 0
266943 컴돌이는 꼭 대기업 가라.. [1] 쿄스케갤로그로 이동합니다. 11.08.26 113 0
266942 형들 친구없이 혼자 사회봉사 신청하면 외로워짐? 123456(121.135) 11.08.26 40 0
266940 내가 애지중지하던 8기가짜리 스타워즈 날아갔다 T.T [2] 분당살람갤로그로 이동합니다. 11.08.26 59 0
266939 형들 교양과목 학점따기 쉬움? [2] 123456(121.135) 11.08.26 62 0
266938 좋아 이렇게 된거 프로그래밍 갤러리에서 해킹동아리만듭시다. kirsr(112.151) 11.08.26 86 0
266937 혹시 대학교 프로그래밍 과제있는 싸이트 아는형들있어? [4] 호놀룰루(211.114) 11.08.26 102 0
266935 어느분야에서든 1만 시간의 법칙을 달성하면 먹고사는덴 지장없대잖아 [5] ㅇㅇ(61.77) 11.08.26 135 0
266934 지방대 출신 게이들아 왜 열등감 가지냐 [4] ㅂㅈㄷ(125.180) 11.08.26 167 0
266933 뭐....뭐야 ;; 네이버 아이디 해킹해서 도배글썼네;; [4] 해킹당햇엉(121.171) 11.08.26 114 0
266931 지잡vs인서울 아웃풋 논쟁 하면서 드는 생각 [1] 망함그냥갤로그로 이동합니다. 11.08.26 87 0
266929 형들 다이렉트엑스 애니메이션 질문있어여 프로그래밍갤(203.249) 11.08.26 38 0
266927 이걸 내가 좋아서 시작했나 하는 의문도 들기시작 [1] +어게인갤로그로 이동합니다. 11.08.26 107 0
266926 프로그래밍잘하는거보다 영상편집프로그램 잘다루는사람부럽다 [5] ㅇㅇ(61.77) 11.08.26 91 0
266925 어제 얼짱시대 보다가 느낀건데 kirsr(112.151) 11.08.26 48 0
266924 어떤회사가 좋은회사인지 잘 모르겠어 [2] ㅇㅇ(211.175) 11.08.26 64 0
266923 조증 걸렸낰ㅋㅋㅋ [1] y녀6디리(218.146) 11.08.26 58 0
뉴스 ‘낙태권 옹호’ 릴리 앨런, “낙태 몇 번 했는지 기억 안 나…자주 임신해” 디시트렌드 10:00
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2