디시인사이드 갤러리

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

갤러리 본문 영역

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

Vita500갤로그로 이동합니다. 2009.07.22 21:07:27
조회 451 추천 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/06/10 - -
152342 나도 오늘 기분이 존나 좇치 않타. [1] 캐꼬꼬닭(112.216) 09.10.14 57 0
152341 뉴비도 별로 기분이 안조아.. IHF갤로그로 이동합니다. 09.10.14 102 0
152340 형..은 아니지만 나도 기분이 안조아 아주아슬갤로그로 이동합니다. 09.10.14 90 0
152339 오랜만에 해킨에 머좀 깔려고 하니깐. 혼아갤로그로 이동합니다. 09.10.14 50 0
152337 형도 기분이 별로 안종아. [6] yundream(211.189) 09.10.14 174 0
152334 요즘 프갤에 첨보는 닉들이 많아졌다 존나 숙제글이나 쳐올리는 새퀴들... [3] 독대(222.109) 09.10.14 101 0
152333 1학년인데 과제좀 도와주세요 [5] 에취갤로그로 이동합니다. 09.10.14 90 0
152331 윗분들도 미국산 소고기가 싫으신가봐 [5] 유리한갤로그로 이동합니다. 09.10.14 129 0
152330 숙제좀.... [1] 트리플악셀갤로그로 이동합니다. 09.10.14 57 0
152328 숙제좀알려주세요 긴급합 [3] 숙제(124.80) 09.10.14 78 0
152327 횽들 즐쿰~ [3] algo갤로그로 이동합니다. 09.10.14 67 0
152326 숙제좀... [6] 트리플악셀갤로그로 이동합니다. 09.10.14 86 0
152325 윈도우에서 환경변수 설정 어떻게 해? <-- 횽들아.. 관심좀 가져 주 [7] rntjr갤로그로 이동합니다. 09.10.14 226 0
152324 난 씨발 존나 무능한거같다. [20] 개쉛기갤로그로 이동합니다. 09.10.14 241 0
152323 숙제좀알려주세여 [10] 부부부부분(203.253) 09.10.14 119 0
152322 쉘스크립트에 suid 걸어놓으면 작동하지? [2] 빕뱟뱟갤로그로 이동합니다. 09.10.14 71 0
152319 횽들 혹시 깨진 skm파일 살리는 방법알아여? [7] 강포(211.211) 09.10.14 103 0
152318 오버로딩도 다형성인가여? [8] 아오자바(211.114) 09.10.14 170 0
152316 판다가 싫다 [6] 천회장(125.7) 09.10.14 142 0
152314 코엑스에서 밥을 먹고 왔다.. [10] 잇힝유후갤로그로 이동합니다. 09.10.14 191 0
152312 [VC][VB] dll VB에서 참조하는거 질문 좀 할께- [5] 엑소시(112.171) 09.10.14 150 0
152311 DFS 알고리즘 질문드려요 [6] dd(121.130) 09.10.14 119 0
152310 빌드 시간 줄이는 방법 [9] Vita500갤로그로 이동합니다. 09.10.14 145 0
152309 ABAP은 여기 안껴주나여? [6] dkqkq(203.241) 09.10.14 137 0
152308 개그맨 김제동씨에게 다시 마이크를 쥐어줘라. [3] 물속의다이아갤로그로 이동합니다. 09.10.14 125 0
152306 게임 추천 좀... [9] 물속의다이아갤로그로 이동합니다. 09.10.14 115 0
152305 빌드 시간 오래걸린다는 말, 이해가 안된다. [3] Vita500갤로그로 이동합니다. 09.10.14 125 0
152304 90년대 초반 대한민국 100대 기업... [2] 물속의다이아갤로그로 이동합니다. 09.10.14 156 0
152303 평일 오전에도 디씨에 뻘글이 많은건.. [2] 잇힝유후갤로그로 이동합니다. 09.10.14 97 0
152302 C# 클래스 안에서 자기 클래스를 호출 하는건 뭐야?? 한번 봐줘.. [12] 클라리네이갤로그로 이동합니다. 09.10.14 167 0
152300 자아가 붕괴되고있다. [10] 유리한갤로그로 이동합니다. 09.10.14 209 0
152299 파워 포인트를 이용한 미연시 제작 이론 [8] 피로토스갤로그로 이동합니다. 09.10.14 207 0
152297 최근 24시간동안 블로거들이 관심있어한 단어들. [2] rntjr갤로그로 이동합니다. 09.10.14 98 0
152295 windows 2003 iis asp닷넷 서버 모니터링 화면은 어디서?? [1] jj(211.55) 09.10.14 74 0
152294 어셈블리 소스 간단한건데 뭐하는 프로그램인지좀 가르쳐주세요. [6] 투기매니아갤로그로 이동합니다. 09.10.14 170 0
152291 학생과 교수의 관계 [1] ww(116.45) 09.10.14 151 0
152290 잠을 잘려고 그래도 [3] Q Lazzarus갤로그로 이동합니다. 09.10.14 124 0
152287 [C] 함수내에서 선언된 변수를 다른 함수에서도 인자로 쓸수 있는지? [2] ㅁㅁ(59.86) 09.10.14 93 0
152286 아는횽들 제발 답변좀 부탁해;;;; 제발(125.190) 09.10.14 44 0
152285 분야를 정하기가 난감하네 [2] ㅋㅋㅋ(121.141) 09.10.14 146 0
152284 도와줘요 횽들 [5] Si(211.187) 09.10.14 79 0
152283 운영체제 괜찮은 책하나만 추천해주세열 [6] ㄻㄻ(121.157) 09.10.14 175 0
152282 뇌를 자극하는 알고리즘 책 주문 완료. [7] Triple3갤로그로 이동합니다. 09.10.14 523 0
152281 와나 미쳐버리겠넼ㅋ ㅠㅠ [5] IHF갤로그로 이동합니다. 09.10.14 126 0
152280 이제 로또따위 필요없다 [3] Rei@디씨갤로그로 이동합니다. 09.10.14 109 0
152278 형들 win32/parite는 왜 걸리는거야? 이건 부팅할수록 불어나? [12] 파리떼무서워(121.143) 09.10.14 102 0
152277 오늘 숙제글 쩌네여 [1] ㅇㅇㅃ갤로그로 이동합니다. 09.10.14 66 0
152276 나도 숙제 질문좀... [9] 연화갤로그로 이동합니다. 09.10.14 165 0
152274 혹시 CV 기본원리에 대해 공부한 횽 있을까? 야임ㅋ(121.167) 09.10.14 44 0
152273 횽들아 C언어 과제중인데 힌트좀주세요. [9] 읗게(115.20) 09.10.13 198 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2