디시인사이드 갤러리

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

갤러리 본문 영역

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

Vita500갤로그로 이동합니다. 2009.07.17 16:29:45
조회 242 추천 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/27 - -
공지 프로그래밍 갤러리 이용 안내 [69] 운영자 20.09.28 35110 62
2703781 리눅스는 왜케 지랄맞음 ㅇㅅㅇ 류류(39.7) 18:56 4 0
2703780 일본 중고나라 [1] 도리스아(119.195) 18:54 8 0
2703778 무속인 뉴스 나온다 프갤러(121.172) 18:50 17 0
2703776 찐따들 특징 2 ♥[19만]냥덩대장경♥갤로그로 이동합니다. 18:46 11 0
2703775 이게 진정한 알파녀 몸매임 ㅇㅅㅇ [1] 류류(39.7) 18:45 26 2
2703774 원칙과 믿음이 이 세상 그 무엇보다도 중요하냐?? ㅇㅇ(223.38) 18:44 5 0
2703773 해가 길어지니 나님의 하루루틴도 조금씩 뒤로 밀리는듯.. ♥[19만]냥덩대장경♥갤로그로 이동합니다. 18:44 5 0
2703772 어린 여자아이를 즐겨 봅니다 ㅇㅅㅇ 류류(118.235) 18:42 9 0
2703771 코딩 포기하고 컴퓨터 조립이나 할까 프갤러(121.170) 18:42 6 0
2703770 전산직 취업하고 싶은데 정처기토익이면 될까요? 프갤러(183.107) 18:41 11 0
2703769 RN하는데 꼭 타스 필요함? [3] 뉴진파갤로그로 이동합니다. 18:32 21 2
2703768 개발자는 그냥 게임 개발하는게 최고인거 같음 프갤러(14.39) 18:30 17 0
2703767 실력좋고 말 잘하는 개발자 많던데 [1] ㅇㅇ(172.226) 18:25 29 0
2703766 모니터를 물에 담그다 - 가격 측정 [3] 프갤러(121.172) 18:22 36 2
2703765 한이 맺혓당께 ㅇㅇ(112.172) 18:14 13 0
2703762 자식이 군대에서 억울하게 죽엇는데 부모는 머함? [4] 신종야옹갤로그로 이동합니다. 18:09 61 5
2703761 이력서 300개 넘게 써도 안되고 싸피도 5번이나 지원했는데 한번도안되고 [8] 프갤러(112.150) 18:08 117 0
2703760 이거 뭐 선택해야함? ㅇㅇ(103.50) 18:07 16 0
2703759 전역했다고 300만원짜리 컴퓨터 맞추는게 맞는거냐 시이팔 ㅇㅅㅇ [6] ㅇㅇ(223.38) 17:52 40 1
2703758 찐따들 특징 [4] ♥[19만]냥덩대장경♥갤로그로 이동합니다. 17:51 34 0
2703756 6월 19일날 J7 Pro 사러 갑니다 정상 메인보드 [1] 도리스아(119.195) 17:47 17 1
2703755 물경력 쌓다가 물통 넘치겠다 [5] 진척갤로그로 이동합니다. 17:36 42 1
2703754 스포) 이거 누가 이길 거 같아? 프갤러(106.101) 17:29 35 0
2703749 고수선생님들 코틀린 문법하나만 질문좀ㅠㅠ [3] ㅇㅇ(125.242) 17:24 22 0
2703748 오늘도 개꿀 빨았다 [3] 아스카영원히사랑해갤로그로 이동합니다. 17:24 45 0
2703747 명문대 출신에 국비 강사는 어떤경우임? [4] 프갤러(14.39) 17:17 43 0
2703746 하모니카OS 홈페이지 왜 안돼죠? 발명도둑잡기갤로그로 이동합니다. 17:16 14 0
2703745 이 냥덩이는 무료로 흔들어 줍니당❤+ ♥[19만]냥덩대장경♥갤로그로 이동합니다. 17:15 16 0
2703743 ✨⭐+❤+나님 시작합니당❤+⭐+✨ ♥[19만]냥덩대장경♥갤로그로 이동합니다. 17:11 15 0
2703742 나님 시작합니당❤+ ♥[19만]냥덩대장경♥갤로그로 이동합니다. 17:04 16 0
2703713 혹시 오토핫키로는 창마다 음소거가 안될까요 [5] 프갤러(115.40) 16:59 31 0
2703697 이 냥덩이는 무료로 흔들어 줍니당❤ ♥[19만]냥덩대장경♥갤로그로 이동합니다. 16:57 16 0
2703650 댕쪽이상담소라는 형욱씨 진화버전 생겼더라 [1] 헬마스터갤로그로 이동합니다. 16:48 18 0
2703648 노트북 사용하면서 플스5 하는게 제일 좋은 선택임 프갤러(14.39) 16:47 17 0
2703647 아직두 윈두우 쓔면 미개하다고 해야하나 프갤러(182.172) 16:47 11 0
2703646 윈도우12 나오면 윈도우 개 떡상하는건 기정사실임 [2] 프갤러(14.39) 16:47 22 0
2703641 지능적 맥까인가..ㅇㅅㅇ [1] 헤르 미온느갤로그로 이동합니다. 16:45 20 0
2703636 맥으로 코딩하면 더 기분좋음 [1] 프갤러(182.172) 16:42 23 0
2703633 요즘 mz들은 맥북만씀 [1] 프갤러(182.172) 16:41 22 0
2703632 [구름] 카카오테크 부트캠프 교육생 모집 (~6/10) [2] allforyoung(14.32) 16:40 42 0
2703631 반두체 발전시킬필요없음 arm 쓔면 2배 성능업 [1] 프갤러(182.172) 16:40 12 0
2703626 맥북이 ㅈ같은점 [8] ㅇㅇ갤로그로 이동합니다. 16:37 45 0
2703624 좆같은 jdk 21 개 시발 병신 버전 절대 쓰지마셈 [2] 프갤러(1.223) 16:35 32 0
2703623 요즘 mz들은 맥북만씀 [1] 프갤러(121.157) 16:35 15 0
2703619 맥 3일 사용소감 [5] ASDF(121.137) 16:33 40 0
2703617 게임 하려면 윈도우 써야 된다고 !!!!!!!!!!!!!!!!!!!!! [2] 프갤러(14.39) 16:33 28 0
2703615 중요한 건 메시지야 [1] 프갤러(121.157) 16:32 11 0
2703614 요즘 회사에서 맥만 쓴다 [1] 프갤러(121.157) 16:31 16 0
2703613 프갤 지금 진짜 병신 같네 [1] 프갤러(121.157) 16:31 21 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2