디시인사이드 갤러리

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

갤러리 본문 영역

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

Vita500갤로그로 이동합니다. 2009.07.22 21:07:27
조회 458 추천 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 - -
AD 휴대폰 바꿀까? 특가 구매 찬스! 운영자 25/07/02 - -
271185 야이 프로그램이나 쳐만들때가 아니다!! [4] 거칠게갤로그로 이동합니다. 11.09.10 94 0
271184 이틀후면 추석인데 아저씨들은 내려갈꺼야? 가격거품갤로그로 이동합니다. 11.09.10 29 0
271183 NDK r6을 죽입시다 ㅁㄴㅇㄹ(115.137) 11.09.10 49 0
271182 컴좀 잘하는 흉들 도와죠 [3] 도시인(61.102) 11.09.10 49 0
271181 야이쉬벨 직렬화ID따윈 개나주라지 쵸쵸쵸(219.251) 11.09.10 19 0
271180 화씨온도를 섭씨온도로 바꾸는 c언어로 [4] ff(211.228) 11.09.10 436 0
271179 살춤이횽 소환! [5] Light search갤로그로 이동합니다. 11.09.10 65 0
271178 니들 반성문을 영어로 하면 뭔줄 아냐??! [4] 독담갤로그로 이동합니다. 11.09.10 112 0
271177 추석연휴잘들보내세요들 三didas갤로그로 이동합니다. 11.09.10 21 0
271176 명지대 컴공이면 괜춘함? [1] 독담갤로그로 이동합니다. 11.09.10 162 0
271175 아부지가 통닭 시켜주심 ㅋㅋㅋ [4] 독담갤로그로 이동합니다. 11.09.10 79 0
271174 dot 영어 왤케 잘함?? 20살때 725?? 대학교 어디임??? [3] 컴돌이(180.227) 11.09.10 102 0
271173 야 뒹신드라.추석 d-2이다. [1] 쵸쵸쵸(219.251) 11.09.10 30 0
271171 아오 이마트서 장보는데 [13] 뇌지랄갤로그로 이동합니다. 11.09.10 144 0
271170 내 노트북 개쩜 [2] 독담갤로그로 이동합니다. 11.09.10 92 0
271169 프갤러들 주식에 관심없음?? [10] 독담갤로그로 이동합니다. 11.09.10 105 0
271168 열강 C 존나 많음 [1] 로하로하알로하갤로그로 이동합니다. 11.09.10 79 0
271167 흠,,, 디아블로3 나오면 난 아마 또 공부를 하지않겠지.. [2] 독담갤로그로 이동합니다. 11.09.10 51 0
271166 외부변수가 뭐지 ㅜㅜㅜㅜ [4] 독담갤로그로 이동합니다. 11.09.10 62 0
271165 Deanex횽 어디삼 [2] 로하로하알로하갤로그로 이동합니다. 11.09.10 39 0
271164 if랑 for문만 써서 만들었음.. [1] IUV갤로그로 이동합니다. 11.09.10 74 0
271163 내가 다니는 대학교에 유학파 형이한명있는데 [1] 독담갤로그로 이동합니다. 11.09.10 87 0
271162 성대아싸는 영어장애인입니다. [2] [성대아싸]갤로그로 이동합니다. 11.09.10 107 0
271161 영어 실력이 그렇게 쉽게 느나??? [46] 컴돌이(180.227) 11.09.10 254 0
271159 보안하고싶은사람 꼭봐라 [1] 보안막장(122.46) 11.09.10 107 0
271158 배열을 외부변수로 바꾸라는게 무슨소리예염?? [4] 독담갤로그로 이동합니다. 11.09.10 66 0
271155 새상은 넓고 [3] Adelposs갤로그로 이동합니다. 11.09.10 55 0
271154 개발환경 원클릭으로 만들라고! 탐라국(121.159) 11.09.10 44 0
271153 이야 ! 해냈다! [8] 독담갤로그로 이동합니다. 11.09.10 114 0
271152 횽들 들여쓰기 떄문에 그러는데 [7] 독담갤로그로 이동합니다. 11.09.10 64 0
271150 게임은 무슨언어로 만들엉?? [5] 열심히해보잣갤로그로 이동합니다. 11.09.10 134 0
271149 시그멘테이션 오류는 어떻게해야 나는거예염?? [4] 독담갤로그로 이동합니다. 11.09.10 69 0
271148 천재해커의 전설 기억나징 [2] Adelposs갤로그로 이동합니다. 11.09.10 93 0
271147 공부 하고있거든요 ㅜㅜ [3] 독담갤로그로 이동합니다. 11.09.10 73 0
271146 아아.. 너무 잉여롭다 [1] Rei@디씨갤로그로 이동합니다. 11.09.10 49 0
271145 포인터까지배우고 나서 교수님이 시킨거 생각난다 Adelposs갤로그로 이동합니다. 11.09.10 61 0
271144 니들이 존재의 의미를 깨닫지 못하는한 영원히 고통스러울뿐이다. [2] 쵸쵸(219.251) 11.09.10 50 0
271143 중소기업들이 나의 능력을 알아보지 못하는 이유... [6] 천재해커(59.14) 11.09.10 171 0
271142 프갤러들 다 기본으로 토익 800이상에 토익스피킹 7급이상 나오잖아? [30] Deanex갤로그로 이동합니다. 11.09.10 227 0
271140 돈 받고 프로그래머 때려치우기 VS 프로그래머로서 정년 55세까지 보장 [1] ㅇㅇㅇ(121.144) 11.09.10 273 0
271139 이히 횽 봐랑 [2] y녀6디리(220.118) 11.09.10 38 0
271138 만약 C++ 나 C에서 (수정) [10] 써무사(50.131) 11.09.10 95 0
271137 훌륭한 프로그래머와 대단한 개발환경 [2] 구글리(115.145) 11.09.10 88 0
271135 별찍기 해봄 ㅇㅇ 변수 5개나 씀 [2] 로하로하알로하갤로그로 이동합니다. 11.09.10 83 0
271134 내가 옜날에 수학 떡밥 관련해서 본 개념글 올려봄 [4] 뇌지랄갤로그로 이동합니다. 11.09.10 132 0
271133 형들 플밍에서 수학은 어디까지? [5] Adelposs갤로그로 이동합니다. 11.09.10 105 0
271132 형들 소켓 플밍 말이야 [2] Adelposs갤로그로 이동합니다. 11.09.10 54 0
271131 뇌지랄아 [9] Adelposs갤로그로 이동합니다. 11.09.10 60 0
271130 응용 별찍는거 나도 해봣는데 [3] 로하로하알로하갤로그로 이동합니다. 11.09.10 50 0
271129 으앜 심심해 진짜 3개월 동안 플밍도 놓고 병신병신열매 능력자 됨 [4] Adelposs갤로그로 이동합니다. 11.09.10 78 0
뉴스 신지 예비신랑 문원, 과거 논란 해명하며 진실 밝혀 디시트렌드 07.05
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2