RPG Maker
2006.12.17 06:30

방사형 마법범위 좌표구하기

조회 수 1510 추천 수 9 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄

이 글은 RPG2K의 변수의 개념과 맵의 X,Y좌표를 변수와 관련시킨 응용법을 익히신 분들을 위한 내용입니다.


 


 


 


방사형 마법이란, RPG게임에서 자주 찾아볼 수 있는 형태의 범위마법으로,


십자형 혹은 마름모꼴의 범위를 안에 있는 적에게 공격 혹은 효과를 가하는 마법입니다.


스타로 말하자면 스플래쉬 어택이나 다름 없죠.


(공격이 가운데로 갈수록 데미지가 쎄지는건 제작자 설정 맘이지만)


이미지와 함께 보신다면 좀더 이해가 쉬울겁니다.


 



 


위의 이미지와 같이 지정된 한 범위에만 영향을 끼치는것이 아니라 상하좌우 한칸씩 더 영향을 끼칩니다.


이 상황에서는 중앙 좌표와 상하좌우로 +1 혹은 -1을 한 좌표를 구하면 됩니다.


 



 


위의 이미지는 모든 방향으로 범위가 한칸 더 늘어난 형태입니다.


좌표를 구해야 하는데...총 13칸이군요...조금 버겁습니다만...이정도는 하나하나 좌표를 구해줄 수도 있습니다.


 



 


칸을 세지 않아도 보기만 해도 좌표 구하기가 짜증 나는 범위입니다.


그래도 좋은 게임 제작을 위해서라면 이정도는 견뎌줍시다!!!


 



 


이건 아냐~!!!


물론 알만툴이 한 화면에 표시하는 칸수는 20*15의 칸이므로, 이정도의 범위를 쓰는 분은 적지만


혹시나 쓰게 된다면 이 이상부터는 지옥입니다.


 


 


사실상 RPG2K에 있는 XY좌표의 기하학적인 부분은 다룰 일도 크게 없겠지만, 다루게 된다면 불편한 편입니다.


어떻게 하면 이걸 좀 편하게 할 수 있을지......


 


여기서 수학적인 창의력을 발휘해서 저 범위의 좌표계산을 좀더 쉽게 해봅시다.


 


만일, 한 좌표만 구해서 그 지점에만 영향을 끼치는 한칸의 마법이 있다면, 그 마법의 단계를 0 이라고 칩시다.


그리고 첫번째 이미지 처럼, 한칸 뻗어나간 것을 1 이라고 치지요.


두번째 이미지는 두칸 뻗어나간 거니까 2, 세칸은 3, 마지막 지옥의 범위-_-인 네칸은 4라고 칩시다.


 


그렇다면 여기서 일부 분들은 무언가를 아실겁니다.


바로, 전후좌후 사방팔방, 칸수의 합은 그 단계의 수라는 겁니다.


 


말이 조금 혼란스럽나요?


네번째 이미지로 설명을 해봅시다.


 


 



 


중앙 지점의 좌표는 4,4 입니다. (맨 왼쪽의 최상단의 좌표를 0,0 으로 기준이 되었을 경우입니다. RPG2K의 일반 좌표계산이죠.)


그럼 저 마름모꼴의 가장 바깥쪽의 하나인 좌표 2,6과 4,4의 칸수 거리를 계산 해봅시다.


2 - 4 = -2  |-2| = 2  -> 2의 차이   ( |  | 는 절대값을 의미합니다. 중등수학 배우셨으니 다들 아실테죠?)


6 - 4 = 2                 -> 2의 차이


2 + 2 = 4                 -> 단계 수치


 


가장 바깥쪽중 하나인 좌표 1,5와의 거리도 계산 해봅시다.


1 - 4 = -3   |-3| = 3  -> 3의 차이


5 - 4 = 1                  -> 1의 차이


3 + 1 = 4                  -> 단계 수치


 


역시나 4가 나옵니다. 맨 바깥쪽의 좌표는, 중앙으로부터 모두 4의 차이가 납니다.


 


 


 


 


그럼 이 방법을, 적이 저 범위 안에 들어와 있다는 가정하에 응용을 해봅시다.


일단 중앙 좌표를 계산 합니다. 만일 중앙 좌표가 맵 어딘가의 (56,74) 라고 해봅시다.


그 다음 A라는 몬스터의 좌표를 계산시킵니다. 그 몬스터의 좌표가 (52,74) 일 경우, 몬스터는 마법의 영향을 받을까요?


 


|중앙좌표 X - 몬스터 X| + |중앙좌표 Y - 몬스터 Y| ≤ 4


 


|56 - 52| + |74 - 74| = 4 ≤ 4


 


조건이 성립하므로 몬스터는 마법의 영향을 받습니다.


 


 


몬스터 좌표가 (57,75) 일 경우,


 


|56 - 57| + |74 - 75| = 2 ≤ 4


 


역시 조건성립으로 인해 몬스터는 마법의 영향을 받습니다.


 


 


몬스터 좌표가 (55,78) 이라면


 


|56 - 55| + |74 - 78| = 5 > 4


 


4 이하의 값이 아니므로, 몬스터는 마법의 영향을 1칸 차이로 벗어납니다.


 


 


 


 


잠깐!! 그런데 절대값은 어떻게 구하지?


확실히 눈씻고 찾아봐도 RPG2K엔 변수에 절대값을 구하는 것이 없으므로 조금 귀찮은 방법을 써야 합니다.


 


중앙좌표 X 혹은 Y - 몬스터 X 혹은 Y 를 임의의 변수에 대입시킵니다. 0334: 범위마법01절대값X 라던가로 말입니다.


해당 변수가 0 보다 크다면, 그냥 냅둡시다.


해당 변수가 0 보다 작다면, 곱셈 연산을 이용해서 -1 을 해줍시다.


이제 그 "0334: 범위마법01절대값X"에 "0335: 범위마법01절대값Y"를 더한 후, 조건분기를 만들어


그 값이 4 이하라면 몬스터가 마법에 영향을 받게 하고, 그렇지 않으면 그냥 냅둡시다 -_-)


 


 


 


 


아무래도 단순노가다보다는 머리를 써야 하니 복잡해 보입니다만 ㅡ.ㅡ;;


실제로 게임을 만들때면 단순노가다보다 훨씬 많은 시간을 절약할 수도 있으며,


이 방법을 이용하여 더 많은 종류의 마법을 만들 수도 있고 다른 맵에서의 똑같은 마법을 불러올때도 편리합니다.


 


 


이러한 마법은 턴제 전략 시뮬레이션 RPG에도 유용하며,


액션RPG 마법 같은 경우, 주인공을 중심으로 사방을 폭파시키는 마법을 만들때 유용합니다.


중앙좌표를 주인공으로 맞춰놓고 쓰시면 되겠죠?


 


 


도움이 되었기를 바랍니다.

?

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
764 RPG Maker 나름대로 게임제작1 - 시나리오 작성법 켈리시 2006.12.26 1447
763 언어/기타 포토샵 완전 정복 !! - 1 - (채도감소) file 다크세이버™ 2006.12.20 532
762 언어/기타 바람수지매클 이동리스트 작성요령 file 청연 2006.12.20 372
» RPG Maker 방사형 마법범위 좌표구하기 BAYONET 2006.12.17 1510
760 언어/기타 [이벤트 ID이용의 예]슈팅 게임 file masa 2006.12.16 1214
759 언어/기타 맵배치 이런식으로 하면 되려나요..?'';; file 땅콩아줌마 2006.12.15 1689
758 언어/기타 이벤트를 이용, 장애물을 포함한 적과의 거리계산[중급이상추천] file masa 2006.12.14 1291
757 언어/기타 각툴의 팔렛트비교 카타린 2006.12.13 752
756 언어/기타 주인공 이름이 마땅한게 없다면~ 3 네모상자 2006.12.12 1134
755 언어/기타 [C++] 객체 지향 프로그래밍 (OOP) -1- Zeprod 2006.12.12 1191
754 RPG Maker 알만툴 K강의. 스위치를 알자 ☆KBOY★ 2006.12.12 1184
753 언어/기타 [서론] 콘솔창으로 작업하는 것이 허무하신가요? Zeprod 2006.12.10 1064
752 언어/기타 축구게임 시스템 헤지혹 2006.12.10 1358
751 언어/기타 [도트] 포션그리기 카타린 2006.12.10 1041
750 언어/기타 [첫강좌] 양털을 깎아봅세~! file 땅콩아줌마 2006.12.10 627
749 RPG Maker 범위를 구할때 쓸 수 있는 식 둘 메카_탁 2006.12.09 1214
748 언어/기타 이론강의 3. 제작에 앞서 해야 될 것들 Vermond 2006.12.09 428
747 언어/기타 이론강의 2.Vnap으로 제작가능한 장르 Vermond 2006.12.09 562
746 언어/기타 이론강의 1. Vnap이란? Vermond 2006.12.09 545
745 언어/기타 외딴 집이랄까..? .. file 도야 2006.12.05 1289
Board Pagination Prev 1 ... 8 9 10 11 12 13 14 15 16 17 ... 51 Next
/ 51






[개인정보취급방침] | [이용약관] | [제휴문의] | [후원창구] | [인디사이드연혁]

Copyright © 1999 - 2016 INdiSide.com/(주)씨엘쓰리디 All Rights Reserved.
인디사이드 운영자 : 천무(이지선) | kernys(김원배) | 사신지(김병국)