디시인사이드 갤러리

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

갤러리 본문 영역

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

Vita500갤로그로 이동합니다. 2009.07.22 21:07:27
조회 450 추천 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
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 어떤 상황이 닥쳐도 지갑 절대 안 열 것 같은 스타는? 운영자 24/05/20 - -
146949 아오... [2] clique갤로그로 이동합니다. 09.09.09 64 0
146948 무료 SVN호스팅 [4] Vita500갤로그로 이동합니다. 09.09.09 96 0
146110 씬입사원횽 서울순방기념, 벙개공지 [36] Vita500갤로그로 이동합니다. 09.09.03 2192 0
144108 프갤 정모 8월21일(금) [71] Vita500갤로그로 이동합니다. 09.08.17 2802 0
146946 웹프로그래밍이 응용프로그래밍보다 어려운듯 [1] 맥콜(125.188) 09.09.09 155 0
146945 잠깐 왔다가 퇴갤. Rei@디씨갤로그로 이동합니다. 09.09.09 54 0
146944 오늘은 200⑨년 ⑨월 ⑨일입니다. [1] Rei@디씨갤로그로 이동합니다. 09.09.09 76 0
146943 와.. 플렉스 샘플 보고 있는데, 바로 이거다... [2] 플렉스빠똘이(123.214) 09.09.09 123 0
146942 이슈가 되는 아이티 기술은? [7] ㅅㅈㅎ갤로그로 이동합니다. 09.09.09 145 0
146941 사는게 점점 두려워져 [4] 이모군(118.222) 09.09.09 99 0
146940 아까 물어본 문제인데요;;;;;;;;;;; [8] 샤이닝™갤로그로 이동합니다. 09.09.09 96 0
146939 노래 듣ㅋ기ㅋ DMW(220.68) 09.09.09 47 0
146937 횽들 오늘은 200⑨년 ⑨월 ⑨일이야! [덯짤] [1] 맑탉앉앍꿇헒갤로그로 이동합니다. 09.09.09 91 0
146935 신호 그래프로 처리하는건데요 [3] 얼룩팬더갤로그로 이동합니다. 09.09.08 113 0
146934 도와주세요 스크립트 관련 [6] 동큐(123.213) 09.09.08 77 0
146933 한 회사에 1년이상 못 있는것도 병인가요? [8] 켁큇갤로그로 이동합니다. 09.09.08 170 0
146930 결국 [2] IT대학갤로그로 이동합니다. 09.09.08 66 0
146929 형들 리눅스 터미널에서 현재까지의 cpu 사용시간 아는 명령어가 뭐야? [7] 맥콜(125.188) 09.09.08 176 0
146928 네트워크 질문 [7] 아돌아삔다(121.127) 09.09.08 91 0
146927 아주쓸쓸훃은 봄미다 [3] 개쉛기(61.101) 09.09.08 49 0
146926 타루 Live.swf [5] 숙신갤로그로 이동합니다. 09.09.08 120 0
146925 두근두근 [3] IT대학갤로그로 이동합니다. 09.09.08 62 0
146924 과연 타루 좋아하는 프갤러가 있을까 [4] 숙신갤로그로 이동합니다. 09.09.08 97 0
146923 이거 좀 웃긴다 [3] ㅇㅇㅃ갤로그로 이동합니다. 09.09.08 81 0
146921 scjp 희소가치같은거 읎죠? [1] 임베디드(112.150) 09.09.08 98 0
146920 비베 답변좀 [9] 테켄갤로그로 이동합니다. 09.09.08 70 0
146919 유리한 봐봐!!!!! [5] 천재플머(121.139) 09.09.08 135 0
146918 오늘 자바 강의가 있어서 들었는데. [8] IT대학갤로그로 이동합니다. 09.09.08 154 0
146917 gdb 잘 쓰고 좋아하는 사람 있습니까? [7] 부락페스티발갤로그로 이동합니다. 09.09.08 97 0
146916 [질문]제가 지금 대학교2학년 컴퓨터전공 학생인데...!! [3] ㅇ.ㅇ(58.235) 09.09.08 147 0
146915 집봐 누님이 연락왔다 [1] Vita500갤로그로 이동합니다. 09.09.08 48 0
146914 좋지못한 질문 [5] 이에갤로그로 이동합니다. 09.09.08 130 0
146913 자바할때 eclipse랑 jdk 있잖어 형들 [5] ㅇ.ㅇ(58.235) 09.09.08 84 0
146912 횽들중에 비주얼 어시스트 쓰시는분 있으면 답변좀 부탁해염. [2] 좇뉴비(110.11) 09.09.08 68 0
146911 가ㅡ상화 [2] 때릴꺼야?(116.40) 09.09.08 90 0
146910 2진수 떡밥 [4] 폭풍간지프로그래머갤로그로 이동합니다. 09.09.08 95 0
146908 놋북쓰는 형들 저스트모먼트 [6] 참치갤로그로 이동합니다. 09.09.08 114 0
146905 프로그램의 겉모습이 그럴듯 해 보이는 이유. [4] 천재플머(121.139) 09.09.08 106 0
146904 c++에서는 칸맞추는거 없어? [7] ㅇㅇ(119.197) 09.09.08 100 0
146903 네트워크쪽 일하는 횽들 궁금한게 있는데 [7] 혀배터갤로그로 이동합니다. 09.09.08 108 0
146897 2진수 떡밥.. [4] rntjr갤로그로 이동합니다. 09.09.08 116 0
146896 아오 요새 고딩들 왜이럼? [2] 숙신갤로그로 이동합니다. 09.09.08 150 0
146894 여친있는 횽아들 문자 함 보내보자. [9] 물속의다이아갤로그로 이동합니다. 09.09.08 161 0
146893 예고사건 그거 [2] ㅇㅇㅃ갤로그로 이동합니다. 09.09.08 107 0
146892 슈팅게임에서 총알 이동 질문좀 [1] 맑탉앉앍꿇헒갤로그로 이동합니다. 09.09.08 97 0
146891 오리고기 vs 회 [14] 물속의다이아갤로그로 이동합니다. 09.09.08 202 0
146890 방금 짜본 2진수 변환 프로그램 [3] 성대아싸(115.145) 09.09.08 132 0
146889 제대로 된 아래 훈남떡밥 풀이 [1] 개쉛기갤로그로 이동합니다. 09.09.08 121 0
146885 내가 사귀고 있는 여자 아이가... [5] Vita500갤로그로 이동합니다. 09.09.08 174 0
146883 정보처리기사가 수준이 ㅈ같기는 한데요.... 오라클설치갤로그로 이동합니다. 09.09.08 111 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2