디시인사이드 갤러리

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

갤러리 본문 영역

DX 2D비행슈팅강좌 15. Character의 위치

Vita500갤로그로 이동합니다. 2009.07.17 16:29:45
조회 239 추천 0 댓글 2




===== DX 2D비행슈팅강좌 ======
===== 15. Character의 위치 =====
위치설정, 이동등을 하려면, Character의 위치가 필요합니다.
Character의 위치를 넣어서 setPosition과 movePosition기능을
넣어보겠습니다.
Character의 위치와 그림의 위치는 별개로 동작하기 위해서입니다.




1. Character의 위치인스턴스
2. 이동
3. 위치설정
4. 분리된 함수들
5. 플레이어의 이미지
6. 플레이어이미지의 위치
7. 총알발사시 Character의 위치를 이용
8. 기능이 약화된 moveLeft







1. Character의 위치인스턴스
_vPosition

그림은 각각개별위치를 가지므로, 위치설정시
Character의 위치가 필요합니다.
Character가 얼만큼이동했으니, 그림들도 그만큼이동하라고 합니다.
그림들은 Character의 위치기준으로 배치가 되는셈입니다.










2. 이동
VOID Character::movePosition(const D3DXVECTOR3* vPos)
{
        _vPosition += *vPos;

        INT iAniSize = 0;
        iAniSize = _vImages.size();
        INT iImage_size = 0;

        for (INT i=0; i<iAniSize; ++i)
        {
                iImage_size = _vImages[i].size();
                for (INT k=0; k<iImage_size; ++k)
                {
                        _vImages[i][k]->Position.x += vPos->x;
                        _vImages[i][k]->Position.y += vPos->y;
                }
        }

}

이전의 moveLeft와 비슷합니다.
다른점은 벡터값만큼 Character._vPosition를 이동시키고,
모든 그림에도 그만큼 이동을 시킵니다.









3. 위치설정
VOID Character::setPosition(const D3DXVECTOR3* vPos)
{
        D3DXVECTOR3 vMove;
        vMove = *vPos - _vPosition;

        movePosition(&vMove);
}

바꿀위치를 받아서, 이동할 량을 계산합니다.
그리고, movePosition을 호출하여 이동을 시킵니다.
기존의 setPosition은 사용하지 않아서 삭제합니다.









4. 분리된 함수들
VOID        InitBullet(VOID);
VOID        InitEnemy(VOID);
VOID        InitPlayer(VOID);

InitCharacter의 함수가 너무커서 3개로 분리했습니다.








5. 플레이어의 이미지
D3DXCreateTextureFromFileExW( _pd3dDevice, L"nemo80_160.png", 

플레이어의 중심점을 바로 알수있게 하기위해 
십자가 그려진이미지를 사용하였습니다.
Character의 0.0f, 0.0f로 위치시키면, 이미지의 정중앙이
윈도의 0,0에 위치합니다.








6. 플레이어이미지의 위치
PlayerImage.Position.x                = -40.0f;
PlayerImage.Position.y                = -80.0f;

플레이어위치에 이미지의 정중앙으로 이미지를 맞추기위해
이동시킵니다.
총알또한 같은 방법으로 이동합니다.








6. 위치얻기
const D3DXVECTOR3* getPosition(VOID);

총알이 나갈위치를 얻을때 이미지에서 얻는것이 아니라
Character에서 얻습니다.
이렇게 하면, 총알이 나갈위치라던지, 어떤 이벤트가 발생할때,
좌상단이 아니라 센터이므로 좌표설정하기가 쉽습니다.






7. 총알발사시 Character의 위치를 이용
imgBullet.Position = *_Player.getPosition();
_Bullet[i].setPosition( &imgBullet.Position );

이미지에서 위치를 받는것이 아니라, Character에서 받습니다.
기준점에서 그리게 되므로, 특별히 값을넣지 않아도 정중앙에서 발사됩니다.






8. 기능이 약화된 moveLeft
VOID Character::moveLeft(VOID)
{
        movePosition( &D3DXVECTOR3( -_Property.Speed * t, .0f, .0f) );
}


속도만 적용하여, movePosition을 호출하는것으로 끝납니다.

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 경제관념 부족해서 돈 막 쓸 것 같은 스타는? 운영자 24/05/13 - -
146502 과외 쿨가이한테 받아보고싶다. [5] 과외(121.129) 09.09.06 119 0
146501 API에서 스샷찍은후에 그 비트맵파일 특정좌표 픽셀 색갈 알아내는방법? [5] 123(121.129) 09.09.06 75 0
146500 오랜만이라능 [3] DMW(220.68) 09.09.06 78 0
146499 아 요즘 너무 머리를 안굴렸다는 생각이들어서.. IT대학갤로그로 이동합니다. 09.09.06 72 0
146497 아 맨날 허접찌끄레기 프로그램만 만들다가 임베디드강좌를 살짜쿵보고나니 IT대학갤로그로 이동합니다. 09.09.06 123 0
146496 C언어 교재 퀴즈 풀다가 막혔는데 형들 질문좀... [4] (121.133) 09.09.06 106 0
146495 swf를 소리파일로 변환해서 파워포인트 배경음에 쓸려고하는데요 [1] 안녕하세요(121.131) 09.09.06 86 0
146492 부탁드립니다 [2] ㅇㅇ(118.217) 09.09.06 69 0
146491 너희도 조심해라, 진짜 위험한 놈이다... [3] 분당살람갤로그로 이동합니다. 09.09.06 256 0
146490 던파하다가 문제 비스타완전권한획득과정 린도갤로그로 이동합니다. 09.09.06 63 0
146489 불쌍한 학생을 위해 프로그램 하나만 만들어주세요 [3] ㅇㅇ(118.217) 09.09.06 92 0
146488 알고는 자나염? Vita500갤로그로 이동합니다. 09.09.06 45 0
146487 XpressEngine많이 느리네.. Vita500갤로그로 이동합니다. 09.09.06 67 0
146485 레지스트리 편집으로 바탕화면 아이콘 모두 지우는거 아는횽 잇어? 준치◕‿◕갤로그로 이동합니다. 09.09.06 25 0
146484 xe설치 중에 에러나네 [5] Vita500갤로그로 이동합니다. 09.09.06 79 0
146483 원래 카드 외국에서 쓰려면 추가로 뭔가 신청해야하나? [3] Rei@디씨갤로그로 이동합니다. 09.09.06 126 0
146482 유리한횽의 네이버 블로그를 봤는데.. [4] IT대학갤로그로 이동합니다. 09.09.06 167 0
146481 자유게시판 하나 만들려고 제로보드 깔고 있슴 Vita500갤로그로 이동합니다. 09.09.06 46 0
146480 이쯤에서 적절한 질문.. 임베디드 프로그래밍 [9] IT대학갤로그로 이동합니다. 09.09.06 321 0
146479 퇴갤 [4] Tathagata갤로그로 이동합니다. 09.09.06 63 0
146476 형들 제가 오타쿠인데 좋은 일본노래 업로드좀 [5] 123(121.129) 09.09.06 84 0
146475 ++ 연산자 관련해서 간단한 질문이 있습니다 [14] 유동니커(218.51) 09.09.06 83 0
146474 두달가량 프로그래밍을 너무 소홀히한거같아. IT대학갤로그로 이동합니다. 09.09.06 53 0
146473 웹 페이지에서 이렇게 나오는 게 뭘로 구현된 거예요? [7] 곰팽이(123.214) 09.09.06 130 0
146472 근데 디횽이제 졸업반임?? [8] 참치갤로그로 이동합니다. 09.09.06 104 0
146471 강의 평가 [53] Vita500갤로그로 이동합니다. 09.09.06 252 0
146470 프로그래밍에서 수학은 중요하다. 그거슨 왜냐하면.. [5] ㅇㅇ(121.129) 09.09.06 173 0
146468 내심 이곳에 올 땐 [19] Tathagata갤로그로 이동합니다. 09.09.06 210 0
146466 이거 뒷북인가효?? [5] 참치갤로그로 이동합니다. 09.09.06 89 0
146465 야식을 끊읍시다. [5] 유리한갤로그로 이동합니다. 09.09.06 136 0
146464 아 형들 게임으로 클릭메세지 보내는 방법 없나요.. [2] 123(121.129) 09.09.06 67 0
146463 사람은 약간 가식적이고 포장을 잘 해야 된다는 생각이들어 [7] 풋살(211.108) 09.09.06 129 0
146462 학교는 다른 수업이랑 연계해서 하지 않나영? 성대아싸(121.137) 09.09.06 37 0
146461 포인터배열 malloc함수 질문염.. [5] 꽌꽌징어(58.226) 09.09.06 82 0
146460 어렸을때는 커서 훌륭한살람이 되고싶었다능 [3] 세브(121.131) 09.09.06 92 0
146458 D-106 & Active X 배포 [4] 양희철갤로그로 이동합니다. 09.09.06 88 0
146457 프로그래머로 활동하시는 분들에게 질문합니다. [7] IT대학갤로그로 이동합니다. 09.09.06 170 0
146456 장난 아니고 웹에서 동영상 보려면 이렇게 나와.. [5] 냐옹_갤로그로 이동합니다. 09.09.06 102 0
146455 우리학교 프로그래밍교수가.. [7] IT대학갤로그로 이동합니다. 09.09.06 262 0
146454 횽아들 안뇽... 삼성전자 천안사업장 전산실에서..OP로 일하고 있는 C [4] C언어(210.94) 09.09.06 291 0
146452 횻 들 키다운 이벤트햇는데 엉뚱한게 입력되.. [5] ㅜㅜ(121.129) 09.09.06 76 0
146451 상수야 [12] 랄랄라ㅎㅎ(222.117) 09.09.06 122 0
146448 그래 난 알쿠횽을 만났었어... [3] 세브(121.131) 09.09.06 77 0
146447 이클립스 64비트 운영체제에서 잘 안돌아가?-_- [3] 1243(121.162) 09.09.06 149 0
146445 파폭쓰는데 디씨쇼핑 차단 어케시켜요? [3] q(203.229) 09.09.06 115 0
146444 개인 데이터 백업 어떻게들 하냐?? [2] 가로나조루(211.212) 09.09.06 112 0
146443 [오일러]흑흑..영어에서 막히다니.. [7] 초밥술사(123.215) 09.09.06 131 0
146442 횽들 c++에서 파일로 스트링 입력, 비교 해야되는데 좀만 도와주~ [5] 시옷지읒갤로그로 이동합니다. 09.09.06 124 0
146441 "개인PC에 백신 안 깔면 포털 접속 못해" [6] 태연여신님갤로그로 이동합니다. 09.09.06 228 0
146440 브루스 리 천재플머(121.139) 09.09.06 90 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2