디시인사이드 갤러리

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

갤러리 본문 영역

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

Vita500갤로그로 이동합니다. 2009.07.17 16:29:45
조회 244 추천 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/06/03 - -
공지 프로그래밍 갤러리 이용 안내 [70] 운영자 20.09.28 35273 62
2707820 하루종일 도큐먼트만 보고있는데 이게 맞나 [4] ㅇㅇ(182.230) 00:57 13 0
2707819 카카오테크 부트캠프 이것도 그냥 이름만 따온거임?;; [2] 딘퐁갤로그로 이동합니다. 00:55 15 0
2707818 Si 대기업은 개발이 아니야 [2] 프갤러(39.7) 00:47 25 0
2707817 주문했다 ㅇㅅㅇ 류류(210.217) 00:46 14 1
2707816 프갤은 조회수는 높은데 왜 글쓰는 사람은 적냐 [1] 딘퐁갤로그로 이동합니다. 00:45 17 0
2707815 건프라 질렀다 딱국(118.235) 00:43 7 0
2707813 발딱 = 발정딱국 딱국(118.235) 00:41 7 0
2707812 삼겹살은 방구냄새를 매력적으로 만든다. [2] 쇼팬하우어갤로그로 이동합니다. 00:39 17 0
2707811 교양 필수로 파이썬하는데 순서도 어디서부터 작성해야할지 갈피를 못잡겠음 프갤러(183.100) 00:39 9 0
2707810 스프린트 개발 제대로 해봐라 [2] 프갤러(39.7) 00:38 16 0
2707806 16GB 노트북 램 사려는데 택배로 시켜도 되나요?? [3] ㅇㅇ(182.230) 00:35 18 0
2707805 10대소녀 어린질을 체험하는게 취미임 ㅇㅅㅇ 류류(210.217) 00:35 18 1
2707804 저는 왼손잡이였는데 [1] 쇼팬하우어갤로그로 이동합니다. 00:35 17 0
2707803 여기는 국비출신 SI현업들 많고 백엔드갤러리는 전공자들이 많은거임? [4] ㅇㅇ(175.223) 00:34 37 0
2707802 고지능자로서 [11] 멍청한유라ㅋ갤로그로 이동합니다. 00:33 42 0
2707801 인생은 참 어려운 것입니다 [5] 쇼팬하우어갤로그로 이동합니다. 00:32 23 0
2707800 Si가 쉬운줄아노 ㅋㅋ [3] 프갤러(39.7) 00:31 35 0
2707796 오랑캐는 오랑캐로 무찌르라했는데 [5] 멍청한유라ㅋ갤로그로 이동합니다. 00:27 27 0
2707795 발딱 << 뜻 아시는분? 딱국(210.106) 00:27 14 0
2707794 여자아이 일자잠지가 너무 보고 싶음 ㅇㅅㅇ 류류(210.217) 00:26 10 0
2707793 다들 인터페이스 선언할때 앞에 I붙이냐? [4] 데버.갤로그로 이동합니다. 00:25 30 0
2707792 바지벗고 반바지 입엇당 ♥물병자리냥덩♥갤로그로 이동합니다. 00:20 16 0
2707791 수면의 4요소 ♥물병자리냥덩♥갤로그로 이동합니다. 00:15 16 0
2707790 영상편집 빠르게 할 수 있는 ai없나 [9] 프갤러(210.113) 00:15 32 0
2707789 아 여자가 존나좋아 ㅠㅠㅠ [7] 딱국(118.235) 00:12 42 0
2707788 프린이 Html 오늘 입문했는데 이거 왜 안되노 [4] 프갤러(121.133) 00:12 28 0
2707787 둘 중에 누가 더 나은 직원임? [4] 딘퐁갤로그로 이동합니다. 00:09 32 0
2707785 apache2랑 httpd랑 무슨차이인가여? [1] ㅇㅇ(182.230) 00:04 19 0
2707784 자바가 아직도 async await 지원안하는건 레전드지 [17] 헬마스터갤로그로 이동합니다. 00:00 90 0
2707783 발정난 딱국이는 사정하구 싶어욧(라노벨제목) 딱국(118.235) 00:00 12 0
2707782 si는 기술스택도 문제지만 [1] 프갤러(220.65) 00:00 32 0
2707781 아이시발 하노이탑 존나 어렵네 [5] ㅇㅇ(211.235) 06.04 61 0
2707780 SI기술스택이 그렇게 후지냐 [7] 멍청한유라ㅋ갤로그로 이동합니다. 06.04 57 0
2707779 나님이 프갤의 품격을 높인당 [2] ♥물병자리냥덩♥갤로그로 이동합니다. 06.04 20 0
2707777 왜 끙야마려울땐 배아프다고할까? ♥물병자리냥덩♥갤로그로 이동합니다. 06.04 13 0
2707776 나잘라니까내위로다아닥해라 [2] 아스카영원히사랑해갤로그로 이동합니다. 06.04 22 0
2707775 쉬야마려울때 아 보지아파 꼬추아파라고 하지는 않잖아? [1] ♥물병자리냥덩♥갤로그로 이동합니다. 06.04 17 0
2707774 팔팔한 수컷 기엽지 않아? (딱국 말임 히히) [2] 딱국(210.106) 06.04 19 0
2707773 병신들 서비스 가스라이팅에 낚여가지곤 [4] linux갤로그로 이동합니다. 06.04 41 0
2707772 끙야대신 뿡야하니 나아진듯? ♥물병자리냥덩♥갤로그로 이동합니다. 06.04 13 0
2707771 생각해보니 끙야마려운걸 배아프다고 표현하는게 멎나? [1] ♥물병자리냥덩♥갤로그로 이동합니다. 06.04 15 0
2707770 아 배 아프려면 확싱하게 아프면 끙야하는대 이도저도 아니게 마려 [4] ♥물병자리냥덩♥갤로그로 이동합니다. 06.04 25 0
2707769 누군데 또 다시 나쁜짓 하는거야? ♥물병자리냥덩♥갤로그로 이동합니다. 06.04 13 0
2707768 전산가면 커리어꼬임.? [3] ㅇㅇ(118.235) 06.04 38 0
2707767 아 ㅅㅂ 소화안된듯 누우잇엇더니 배 아프내 ♥물병자리냥덩♥갤로그로 이동합니다. 06.04 13 0
2707766 에에? 혼또? ♥물병자리냥덩♥갤로그로 이동합니다. 06.04 13 0
2707765 요즘 단어가 잘 기억안나는대 치매인가? ♥물병자리냥덩♥갤로그로 이동합니다. 06.04 17 0
2707764 si는 절대 가면 안됨? 무조건 서비스? [7] 딘퐁갤로그로 이동합니다. 06.04 74 0
2707763 믿어지냐? [2] ㅇㅇ(195.123) 06.04 35 1
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2