디시인사이드 갤러리

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

갤러리 본문 영역

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

Vita500갤로그로 이동합니다. 2009.07.17 16:29:45
조회 238 추천 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 - -
146435 여기가 잉여인간들 친목갤인가효? [12] 가비지콜렉터(220.120) 09.09.06 227 0
146434 무한도전 보다 문득 무한루프 <-- 이말이 일반인들도 쓰는말인가? [4] ㅂㅂ(222.119) 09.09.06 245 0
146433 글 투척 후 잠수 패턴은 나의 주특기지 [2] Alkyl갤로그로 이동합니다. 09.09.06 104 0
146432 아웅.. 자고싶다...ㅜ_ㅡ [4] 혼아갤로그로 이동합니다. 09.09.06 79 0
146430 IDA로 프로그램 한개를 보고 있는뎅 [1] 으앜(211.210) 09.09.06 77 0
146429 갑자기 직캠이 안나와.ㅠㅠ. [3] 냐옹_갤로그로 이동합니다. 09.09.05 75 0
146426 오픈오피스 vs MS오피스 [9] 태연여신님갤로그로 이동합니다. 09.09.05 166 0
146425 네이버나 네이트온같은거보면 있자나 [3] 히밤리눅스갤로그로 이동합니다. 09.09.05 103 0
146424 홈페이지 만들다보면 x같은게말이지 [2] 히밤리눅스갤로그로 이동합니다. 09.09.05 82 0
146421 시스템 프로그래밍 이란 과목이 대체 뭐하는 과목인가요? [11] 시엘(122.254) 09.09.05 215 0
146420 나 지금 열폭중 [6] ISTARI갤로그로 이동합니다. 09.09.05 170 0
146419 철 지난 비키니. 왜 계속 나오냐? [2] 피로토스갤로그로 이동합니다. 09.09.05 119 0
146418 프로그램을 잘짠다 하면 어느 정도 입니까? [2] ddd(112.162) 09.09.05 129 0
146417 라식 해본흉들 있어~ [1] 오딩(116.36) 09.09.05 57 0
146416 선풍기 반품신청을 했는데, 크기가 크다고 무료반품에서 제외네.. Vita500갤로그로 이동합니다. 09.09.05 65 0
146415 이겼다능 [1] 아주아슬갤로그로 이동합니다. 09.09.05 72 0
146414 하루종일 삽질.. 혼아갤로그로 이동합니다. 09.09.05 55 0
146413 너희를 시험 하겠노라. [6] 포도사(58.238) 09.09.05 139 0
146412 vista에서 [5] 이름(121.155) 09.09.05 113 0
146410 더..더미다..으..으앜 으앜(211.210) 09.09.05 69 0
146409 아주 허접한 질문인데... 신발라마갤로그로 이동합니다. 09.09.05 88 0
146407 대한 민국 it 조까라고그래~ [2] 아놔(61.83) 09.09.05 167 0
146406 쓸만한 분산 버전관리 시스템 추천좀 [5] Alkyl갤로그로 이동합니다. 09.09.05 110 0
146405 리눅스 명령어들과 웹서버 셋팅하는 걸 배우려는데 말입죠 [7] 본꺅리눅스(123.214) 09.09.05 129 0
146404 가끔씩 어쩌다가 내가 지금 웃고 있다는 것을 알았을 때, [1] 천재플머(121.139) 09.09.05 74 0
146403 balsaNode, bomul::box.dds [1] Vita500갤로그로 이동합니다. 09.09.05 58 0
146402 php fwrite 로 파일작성할때 <? php문?> 을 넣을수잇냐? ㅇㄹ(59.19) 09.09.05 47 0
146401 날 사랑하는 사람이 있을까? [4] 천재플머(121.139) 09.09.05 126 0
146400 아직 풋풋한 철들지 않은 애들은 잘 납득이 가지 않겠지만... [2] 천재플머(121.139) 09.09.05 152 0
146399 이런 여자라면 사랑할만 하지 않을까? [9] 천재플머(121.139) 09.09.05 254 0
146398 자료구조 문제인데 도대체 뭘 말하는건지 알수가 없네. [10] 사나이갤로그로 이동합니다. 09.09.05 168 0
146396 횽들 나좀 도와줘 ㅠㅠ [3] 고자(121.140) 09.09.05 54 0
146394 오늘의 안춫현 플러그인 [5] 관심시전갤로그로 이동합니다. 09.09.05 153 0
146393 심심하다 'ㅅ' [1] Tathagata갤로그로 이동합니다. 09.09.05 84 0
146392 아 횽들 ap 로 인터넷 공유해놧는데 군대지원(222.101) 09.09.05 45 0
146391 대학 졸업 프로젝트로 [6] 부락페스티발갤로그로 이동합니다. 09.09.05 242 0
146390 비슷하냐능 [9] 분당살람갤로그로 이동합니다. 09.09.05 213 0
146388 로또 어케해야 되지... [2] 신발라마갤로그로 이동합니다. 09.09.05 78 0
146387 DX 2D비행슈팅강좌 23. Character의 복사 [3] Vita500갤로그로 이동합니다. 09.09.05 204 0
146386 비타님 강좌 새로 올라왔네요...주기가 언제주기로 올라오는건가요? [3] 드럼좋아요갤로그로 이동합니다. 09.09.05 78 0
146385 ☆★ 09.09.04 씬입사원 모나미 인증 ☆★ [13] U탭(124.5) 09.09.05 3675 0
146384 형들 운영체제 공룡책 솔루션 한글판은 어디서 구해야 되나영? [2] 안습(125.252) 09.09.05 895 0
146383 자바로 로또프로그램을 짰는데 버튼다는거좀 도와줘 횽~ [6] 신발라마갤로그로 이동합니다. 09.09.05 176 0
146382 알씨리즈 쓰지 말자! [13] 중달(121.138) 09.09.05 261 0
146381 연애의 진도가 빠르면 [3] Vita500갤로그로 이동합니다. 09.09.05 228 0
146380 벙개 후기 Vita500갤로그로 이동합니다. 09.09.05 91 0
146378 Vita500은 사교성스킬이 업데이트 되었습니다. [2] Vita500갤로그로 이동합니다. 09.09.05 81 0
146377 공유기 VPN 기능 쓰는횽 있어? [1] 박뮤탈갤로그로 이동합니다. 09.09.05 78 0
146375 비슷하냐능 [5] 분당살람갤로그로 이동합니다. 09.09.05 104 0
146373 비쥬얼 C++좀 공유해주셈여~~ ㅠㅠ [4] Tulsa갤로그로 이동합니다. 09.09.05 112 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2