메뉴 건너뛰기

창작에 관련된 질문이나 간단한 팁, 예제를 올리는 곳

알만툴 액알.
원리가 도저히 이해가 안 갑니다.
그림넣어서 설명해주세요.
그 뭐시기 그냥 근접공격만 일단.
나중가서 원거리를 합시다.
조회 수 :
2282
등록일 :
2008.03.26
02:07:59 (*.47.100.50)
엮인글 :
게시글 주소 :
https://hondoom.com/zbxe/index.php?mid=study&document_srl=186690

똥똥배

2008.03.28
01:00:22
(*.239.144.2)
그림까지는 못 보여드리겠고 간단히 말로 설명할께요.

일단 주인공 캐릭터와 적 캐릭터가 있습니다.
그리고 투명이고 안 보이는(아니면 공격 효과 애니메이션) 캐릭터 하나가 있습니다.
공격 영역 캐릭터라고 합시다.
이 캐릭터는 일단 이동 불가한 지점같은 구석에 일단 박아두십시오.
보통 0,0을 이동 불가능한 지점으로 만들어 두고 거기에 두는게 가장 편합니다.
이동 가능한 곳에 둘 수도 있는데 그럼 조건식 복잡하니 일단 이동 불가능한 곳에.

이제 주인공의 키 입력을 받았을 때를 처리합니다.
병렬 처리로 하면 좋습니다.
키를 입력 받았을 때 주인공의 방향을 검사한 다음,
위를 보고 있으면 주인공 위에, 아래를 보고 있으면 주인공 아래에...
이런 식으로 방향에 따라서 공격영역 캐릭터의 위치를 설정해줍니다.
이벤트 중에서 캐릭터 위치 설정이란 게 있죠? 그걸로 하시면 됩니다.

이제 또 하나의 병렬 처리가 필요합니다.
적 캐릭터와 그 공격 영역의 좌표를 얻어와서 변수에 넣고
적과 그 공격 영역의 X, Y 좌표가 일치하면 적 캐릭터에게 대미지를 줍니다.
일단은 간단하게 그냥 일시 삭제되게 해버리세요.

그리고 공격한 영역에 계속 그것이 남아있으면 지뢰처럼 되어 버리니
어느 정도 시간이 지나면 다시 0,0으로 보내 줍시다.

일단 처음부터 완벽을 바라지 마시고 일단 적이 공격영역과 부딫쳐 죽어버리는 것 까지 연습해 보세요.

흑곰

2008.04.18
07:38:09
(*.146.136.211)

액알을 알려면 변수를 알아야합니다.

똥똥배님의 설명에 따르면, 변수란 어떤 정보를 넣어두는 공간이라고 보면됩니다.
방이라고 보시면 되요.

Room이요 룸. 방 아시죠?

만약에 'ENEMY_HP' 라는 변수가 있다고 칩시다.
ENEMY_HP 라는 문패가 걸린 방이 있는거라고 생각하세요.

ENEMY_HP, 대입 100  하면  그 방에  100 이라는 숫자가 들어가는 겁니다.

ENEMY_HP, 가산 10 하면 그 방의 숫자에 +10 하는거구요.
가산(加算)의 가는 加(더할 가)입니다.

방 안에 있는 숫자 + 10 이 되는거에요.

만약에 ENEMY_HP 에 30이 대입되어있었는데,
ENEMY_HP, 가산 5 하면 변수값이 35가 되는 거구요.

거기에 또 ENEMY_HP 가산 10 하면 45가 되겠죠.

대입은 =
가산은 +
감산은 -

이렇게 보시면 되고 나머지는 별로 안쓰입니다. 어쨋건 변수를 알면 액알 만들기는 제법 순탄하게 되지요.

기본원리는
주인공이 처음 필드에 나설 때 ENEMY_HP에 300을 대입하고,
ENEMY_HP값이 0보다 크면 적을 표시하게 해둡니다.

그리고 주인공이 적을 때릴 때 마다 30씩 감산시키게 해둡니다.

그럼 적은 10대 맞으면 ENEMY_HP 값이 0 이 되죠?

앞에서 ENEMY_HP 값이 0 보다  클 때 적을 표시하게 해뒀다고 했으니까
적은 화면에서 사라집니다.

흑곰

2008.04.18
07:45:37
(*.146.136.211)
액알을 만드는 법에 대해서는 똥똥배님이 설명해주셨으니
전 변수에 대해서만 설명하고 물러갑니다ㅋ

열심히 하세요
List of Articles
번호 제목 글쓴이 조회 수 추천 수 날짜 최근 수정일sort
105 문D라이브로 더블드래곤을 만들자(3) file 똥똥배 3430   2008-04-18 2008-04-18 18:27
 
104 문D라이브로 더블드래곤을 만들자(4) [2] file 똥똥배 3213   2008-04-20 2008-04-21 07:20
 
103 C++ 데이터의 바이트 용량 임의로 정의할수 없나영 [1] A.미스릴 3059   2008-04-21 2008-04-21 07:18
int는 4바이트로 정해져 있는데 약간의 수만 있으면 되는 수도 있는데 괜히 많은 숫자를 사용해서 메모리를 많이 사용하는 건 아닐지 ㅡㅡ; 3바이트라던지 4비트라던지... 데이터의 바이트 사용량을 임의로 바꿀수 없나요  
102 문D라이브로 더블드래곤을 만들자(5) [6] file 똥똥배 3072   2008-04-21 2008-04-24 03:23
 
101 문D라이브로 더블드래곤을 만들자(6) [2] file 똥똥배 3114   2008-04-23 2008-04-25 05:01
 
100 문D라이브로 더블드래곤을 만들자(7) file 똥똥배 3480   2008-04-27 2008-04-28 04:22
 
99 문D 라이브 질문 [5] 대슬 2889   2008-05-15 2008-05-16 06:13
1. 음악이나 사운드는 어떻게 불러와서 출력하나요. 배웠었는데 까먹었음. 2. 그림을 원하는 각도로 자유롭게 회전시켜서 출력하는 기능은 없나요?  
98 문D라이브로 더블드래곤을 만들자(8) [1] file 똥똥배 2973   2008-05-16 2009-01-07 22:05
 
97 이상하군요. [2] 대슬 2490   2008-05-16 2009-01-07 22:05
MIDI 음악을 메인 루프 앞에서 재생시킨 후 다른 음악을 재생시키려고 했더니 그 다음부턴 음악이 정지만 하고 재생이 되지를 않네요. 예전에 배고파요 만들었을 때는 비슷하게 해도 별 문제가 없었던 것 같은데, 왜 이러는지 잘 모르겠습니다. void bgm(int ...  
96 문D라이브로 더블드래곤을 만들자(9) 똥똥배 2889   2008-05-17 2008-05-17 03:07
9편 : 체계화된 동작 지금까지 열심히 이 강의를 따라오신 분들이라면 지금 게임의 여러 버그가 산재해 있음을 깨달으셨을겁니다. 그걸 왜 그냥 내버려 뒀나면... 귀찮아서~ ~는 훼이크고 일단 가르치는 주제에서 벗어나면 집중력이 떨어지고 어느 정도 이해력...  
95 문D라이브로 더블드래곤을 만들자(10) file 똥똥배 4065   2008-05-17 2008-05-17 03:07
 
94 문D라이브로 더블드래곤을 만들자(11) file 똥똥배 4647   2008-05-17 2008-05-17 20:24
 
93 #define에 대해 [1] A.미스릴 4061   2008-05-19 2008-05-19 18:57
#define을 너무 많이 쓰면 코드에 불안정화가 온다는데 사실인가여? 그러면 불안정화를 막으러면 어떻게 해야하나여 아니면 enum이나 const를 써야 하나...  
92 문D 질문 [5] A.미스릴 3847   2008-05-26 2008-06-12 18:55
1.글자, 문장을 화면상에 출력하는 방법 2.숫자를 스트링으로 형변환할떄 아스키 코드가 아니라 숫자가 옮겨가게 하는법 3.사각형, 원 등을 출력하는 방법(Rectangle 함수같은거 없나여)  
91 문D 질문 #2 [1] A.미스릴 8797   2008-06-01 2009-01-07 22:05
이거 도배하는거같은 마음이 드네여 ㅈㅅ 제가 대화창을 다뤄봤는데여 CTextDlg textdialog(50); CTextDlg * pt_textdialog(&textdialog); pt_textdialog->SetDlg(100, 100, 200, 200); pt_textdialog->SetColor(255,255,0); pt_textdialog->SetDlgBox("_d...  
90 문D라이브 2008년 5월 19일 버전 [2] 혼돈 3747   2008-06-02 2015-12-09 08:06
휴가루 웍휴2를 개발하면서 조금씩 수정 중이지만, 미스릴님의 요청이 있어서 올립니다. 대화창에 관련되서 완성되었다는 것과 흥크립트 부분이 많이 변했다는 것이 주요 변경점입니다. 대화창의 경우 기본은 대화창이 없는 상태로 MakeDlgBox를 사용하면 크기...  
89 MFC 더블 버퍼링 질문 [2] A.미스릴 6603   2008-06-13 2013-11-23 08:43
void CPingpongView::OnDraw(CDC* pDC) { CPingpongDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here // 현재 창 크기와 같은 DC를 만듬 CRect rect; GetClientRect(&rect); int int_client_width = (rect.ri...  
88 씨언어 질문 (내일 시험 ㄷㄷ) [1] 쿠로쇼우 4332   2008-06-17 2008-06-17 22:10
1 121 12321 1234321 123454321 부탁 ㄷㄷ  
87 클레스들을 담은 헤더들의 혼란 [4] A.미스릴 3893   2008-06-21 2013-11-23 08:43
xxx.h파일 //xxx.h class xxx { ... 어떤 멤버함수 (yyy 뭐시기); ... } yyy.h파일 //yyy.h class yyy { ... 어떤 멤버함수 (xxx 뭐시기); ... } 이 두 클래스의 헤더 파일이 있으면 #include "xxx.h"와 #include "yyy.h"를 어떤 순서로 배치해야 할지 혼란스...  
86 문D라이브도 더블버퍼링이 필요한가요? [3] A.미스릴 4223   2008-06-28 2008-06-29 07:06
보니까 backbuffer에 그림을 붙이던데 backbuffer가 배경 버퍼니까 바로 화면에 출력되는건가요? 그런데 그걸 직접 쓰면 MFC의 DC처럼 깜박임과 속도저하가 오는건 아니죠?ㅡ,.ㅡ; 추가로 LoadPicture로 불러온 그림을 다시 안불러온것처럼 되돌리는건 없나요?