디시인사이드 갤러리

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

갤러리 본문 영역

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

Vita500갤로그로 이동합니다. 2009.07.17 16:29:45
조회 241 추천 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/20 - -
145388 [비키니] 이거 리모콘 기본 제공이닷 [4] 분당살람갤로그로 이동합니다. 09.08.28 153 0
145387 와우 인터넷 쵸강국 대학민국 [7] ㅅㅈㅎ갤로그로 이동합니다. 09.08.28 171 0
145386 콘푸로수투 만든 이유??? 훗쇼갤로그로 이동합니다. 09.08.28 72 0
145385 포미닛이 부릅니다. " 안줄래 " [7] 개쉛기갤로그로 이동합니다. 09.08.28 211 0
145384 그럼 콘푸레이크는... [2] 아주아슬갤로그로 이동합니다. 09.08.28 62 0
145383 바보도 프로그래밍을 할수있나요? [10] ㅜ_ㅜ(115.140) 09.08.28 160 0
145382 겜방에서 프겔하는 찌질이가 세상에 있었다니 ㅋㅋㅋㅋㅋㅋ [6] 씬입사원갤로그로 이동합니다. 09.08.28 222 0
145378 문자열 맨 앞에 한 문자 추가하려고 하는데 [7] ㄱㄱ(211.254) 09.08.28 108 0
145377 PHP와 JSP의 공유에 대한 차이점 질문.. [7] 용권(222.107) 09.08.28 123 0
145376 친 프로그래머 그룹이냐능 [5] Tathagata갤로그로 이동합니다. 09.08.28 152 0
145374 콘푸레이크에 대한 오해 [8] Vita500갤로그로 이동합니다. 09.08.28 226 0
145372 구글 직원용 OS [3] fguy(211.192) 09.08.28 313 0
145370 다들오랜만? 타지생활이 힘들구나..ㅠㅠ [11] 커플(24.18) 09.08.28 173 0
145369 경력 3년 반만에 사업을 한다는 것... [2] 물속의다이아갤로그로 이동합니다. 09.08.28 172 0
145367 to 윤횽 prismatic갤로그로 이동합니다. 09.08.28 56 0
145365 높은 굽 구두 신는 거 안 좆군효 [1] Tathagata갤로그로 이동합니다. 09.08.28 93 0
145364 게임시장 음악시장 심의 [2] 심의(218.154) 09.08.28 109 0
145363 얼씨군화 [2] Tathagata갤로그로 이동합니다. 09.08.28 63 0
145362 악 애플타운은 어서 굴러먹던 듣보잡 매체냣 분당살람갤로그로 이동합니다. 09.08.28 50 0
145361 아침에 한 10분 사이에 꾼 꿈 [4] ㅇㅇㅃ갤로그로 이동합니다. 09.08.28 87 0
145360 서든어택화면이치우침 ㅜㅜ내지식으로는 한계..도와주삼 ㅜㅜ 자보섹(121.150) 09.08.28 67 0
145359 키입력에 대해 질문드립니다 [1] 아이유(58.237) 09.08.28 45 0
145358 내가 만만해보이냐?? [4] 개쉛기갤로그로 이동합니다. 09.08.28 173 0
145356 공댄데 프로그래밍 어떤걸 선택하는게 나을까요. [5] 테켄갤로그로 이동합니다. 09.08.28 115 0
145355 한국인들이 야근을 좋아하는이유 [4] Vita500갤로그로 이동합니다. 09.08.28 210 0
145354 귀신꿈을 꾸고 싶다. [4] yundream(211.189) 09.08.28 83 0
145353 내가 지금부터 깜짝놀랄만한 얘기를 해주마. [1] yundream(211.189) 09.08.28 126 0
145352 자기가 하고픈일 하면서 사는 방법. [1] yundream(211.189) 09.08.28 91 0
145351 사장님이 여러분한테 반말함미꽈? [6] 빕뱟뱟갤로그로 이동합니다. 09.08.28 134 0
145348 프로그래머로 롱런하는 방법(2) [2] 심심이(203.248) 09.08.28 210 0
145347 뜨레딩 vs 어씡크로너스 I/O [3] 핫바리(124.198) 09.08.28 146 0
145345 ㅎㅇ [6] Alkyl갤로그로 이동합니다. 09.08.28 84 0
145344 어제 XTM에서 추격자를 해줬거든. [4] 심심이(203.248) 09.08.28 109 0
145343 사람의 마인드는 바뀌기 힘든거 같기는 하다. [3] yundream(211.189) 09.08.28 127 0
145341 과연 육식을 하지 않는다고 해서 성욕이 떨어질까? [2] ㅇㅇㅃ갤로그로 이동합니다. 09.08.28 106 0
145340 형들 갤러리 차단먹었는데 푸는법좀 대가는 확실히 치뤄줄께요 [3] 유일신과성전(125.180) 09.08.28 76 0
145339 서현 교보문고에서 구글의 기술에 대해 자세히 묘사한 책을 봤는데 [4] 분당살람갤로그로 이동합니다. 09.08.28 159 0
145338 콘후레키가 정력감퇴용이란 얘기는 루머다. [13] 심심이(203.248) 09.08.28 159 0
145337 가을이 오나보군요....내마음이 쓸쓸하게.. [1] 초밥술사(123.215) 09.08.28 51 0
145336 횽들 이런 병신같은 경우는 어째야해? [7] 아놩(121.128) 09.08.28 145 0
145335 콘후레잌후는 정력감퇴용으로 만들어졌었음 [6] 초밥술사(123.215) 09.08.28 101 0
145333 게임 분석. [1] 천재플머(121.139) 09.08.28 82 0
145332 참고해라. 천재플머(121.139) 09.08.28 55 0
145326 콘푸레이크의 개발이유 [12] Vita500갤로그로 이동합니다. 09.08.28 250 0
145325 캐꼬꼬닭횽은 봅니다. [13] Vita500갤로그로 이동합니다. 09.08.28 84 0
145324 야근을 존나 시키면 개발자가 어떻게되는지를 이스트소프트가 보여준다 [8] 소발자(58.233) 09.08.28 403 0
145323 12 군나르손`(121.170) 09.08.28 29 0
145322 project euler.. 한문제 더 풀었음. [5] Rei@디씨갤로그로 이동합니다. 09.08.28 92 0
145321 요즘 내가 좋아하는 애 [2] 머그컵갤로그로 이동합니다. 09.08.28 108 0
145320 본질에는 일치. 비 본질에는 자유. 모든 것에 사랑. [7] 머그컵갤로그로 이동합니다. 09.08.28 150 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2