디시인사이드 갤러리

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

갤러리 본문 영역

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

Vita500갤로그로 이동합니다. 2009.07.22 21:07:27
조회 449 추천 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 - -
146824 때는 2010년 X-men들이 한국을 상륙한다. [1] 씬입사원갤로그로 이동합니다. 09.09.08 55 0
146823 도느반이 소설가라는게 true 임?? [3] 개쉛기갤로그로 이동합니다. 09.09.08 100 0
146819 요즘 플렉스가 대세야 [4] 도느반갤로그로 이동합니다. 09.09.08 138 0
146818 재범이에 관해서 [8] Vita500갤로그로 이동합니다. 09.09.08 100 0
146816 맑탉앉앍꿇헒횽은 봅니다 [1] Vita500갤로그로 이동합니다. 09.09.08 62 0
146815 매장 직원 교육용이래 [4] 분당살람갤로그로 이동합니다. 09.09.08 88 0
146814 열심히 하려는 후임을 내손으로 짤라야만 하는 마음 [10] 도느반갤로그로 이동합니다. 09.09.08 257 0
146813 암호화 할때 키는 어디에 저장하나요? [6] ㅇㄹ(218.53) 09.09.08 99 0
146811 쿼리문제 답이다. [1] 피로토스갤로그로 이동합니다. 09.09.08 68 0
146810 뇌자알 소환 캐스팅 완료 [9] ㅇㅇㅃ갤로그로 이동합니다. 09.09.08 142 0
146808 난 첫회사에서 짤릴때. [3] rntjr갤로그로 이동합니다. 09.09.08 189 0
146807 쿼리문제인데 답변 좀.. [3] ㅈㅈ(210.94) 09.09.08 59 0
146806 어제 여자 후배가 [4] 유리한갤로그로 이동합니다. 09.09.08 169 0
146805 난 첫회사에서 사직할때 [3] 하이애나갤로그로 이동합니다. 09.09.08 103 0
146803 횽들 질문점... [6] 신발라마갤로그로 이동합니다. 09.09.08 57 0
146800 회사에 일본 여자 사귀고 있는 횽아가 하나 있는데... [5] 물속의다이아갤로그로 이동합니다. 09.09.08 188 0
146797 회사를 그만 두려고 심각하게 고민중입니다. [7] fguy(211.192) 09.09.08 174 0
146795 오예씨발 하느님 감사합니다! [4] 맑탉앉앍꿇헒갤로그로 이동합니다. 09.09.08 134 0
146793 어제 여자 후배가 [23] 숙신갤로그로 이동합니다. 09.09.08 369 0
146792 재범이 얘 결국 탈퇴하네 [9] ㅇㅇㅃ갤로그로 이동합니다. 09.09.08 125 0
146791 내가 그 개새끼다 [2] LightEach갤로그로 이동합니다. 09.09.08 116 0
146790 요즘 날씨 봐서는 [3] 숙신갤로그로 이동합니다. 09.09.08 55 0
146789 나도 예전에 상무님한테 그만두겠다고 했었어. [3] 심심이(203.248) 09.09.08 113 0
146785 어젠 겉저리를 담가 먹었다능 [2] Tathagata갤로그로 이동합니다. 09.09.08 55 0
146784 자신의 닉네임에 대해 좀 더 신중할 필요성이있다. [14] 개쉛기갤로그로 이동합니다. 09.09.08 182 0
146781 일본의 전자회사들은 분연히 떨쳐일어나 새 CPU 를 만들기로 결의하였다. [2] 때릴꺼야?(116.40) 09.09.08 158 0
146780 정보처리기사 실기 옛날처럼 프로그래밍 도입했으면.. [6] 컹곰(124.80) 09.09.08 204 0
146779 ㅇㅇㅃ횽은 봅니다 [2] Vita500갤로그로 이동합니다. 09.09.08 45 0
146778 잠깐.. 프갤고정 sh횽과 .sh 는 다른 인물인듯? [16] 유리한갤로그로 이동합니다. 09.09.08 175 0
146776 점심 먹으러 가기 전에.. 뻘글 2nd [7] .sh(122.36) 09.09.08 96 0
146775 Vita횽아에게 질문... [2] 물속의다이아갤로그로 이동합니다. 09.09.08 70 0
146774 홈페이지 다 만들었다. [2] Vita500갤로그로 이동합니다. 09.09.08 99 0
146772 세상이 점점 바람지케지고 있다 [5] 분당살람갤로그로 이동합니다. 09.09.08 104 0
146771 우리 회사에 OCP 자격증을 가진 처자가 하나 있는데... [6] 물속의다이아갤로그로 이동합니다. 09.09.08 310 0
146770 뻘글.. [2] .sh(122.36) 09.09.08 67 0
146769 어차피 한번사는 세상. [9] yundream(211.189) 09.09.08 141 0
146768 켄트벡과의 만남 [11] fguy(211.192) 09.09.08 197 0
146767 날 까봐라 이숏키들아!!! [7] 개쉛기갤로그로 이동합니다. 09.09.08 131 0
146765 횽들 visual studio로 verilog 쓸 수 있나효? [4] 크리크리크리갤로그로 이동합니다. 09.09.08 68 0
146763 혼자 있고 싶다. [4] yundream(211.189) 09.09.08 79 0
146760 안녕하세요~ 후훗 [18] .sh(122.36) 09.09.08 176 0
146759 빅파일 무료 다운로드 이용권 [5] Vita500갤로그로 이동합니다. 09.09.08 81 0
146758 천재플머를 까지 맙시다. [13] 개쉛기갤로그로 이동합니다. 09.09.08 259 0
146757 근데 실무에서 메모리 할당같은거 쓰긴하나여? [20] 씬입사원갤로그로 이동합니다. 09.09.08 257 0
146756 천재 프로그래머를 보면서 [3] Vita500갤로그로 이동합니다. 09.09.08 125 0
146755 허벌나게 무서운 이야기 [4] 물속의다이아갤로그로 이동합니다. 09.09.08 106 0
146754 무서운 이야기 [6] 유리한갤로그로 이동합니다. 09.09.08 126 0
146753 알고가 회사 그만두겠다고 했을 때 [11] Tathagata갤로그로 이동합니다. 09.09.08 232 0
146752 포인터를 실무에서 쓰나요? [6] 물속의다이아갤로그로 이동합니다. 09.09.08 115 0
146751 형들 C언어의 단점좀가르쳐주세요...? [9] 한듣보(124.0) 09.09.08 174 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2