RPG Maker
2006.01.14 06:04

[RPG2K~XP] 좌표를 통한 범위공격

조회 수 981 추천 수 8 댓글 1
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
예제를 만들만한 시간이 부족하므로 [죄송 ;;] 말로만 설명을 하겠습니다.
또 저는 이론만 알려드릴뿐 구체적인 방법은 언급하지 않겠습니다.

기본적인 원리는 좌표의 이용입니다.

좌표평면에서의 거리 공식을 배우셨다면 이해하기 쉬울껍니다.

(*좌표평면에서의 거리 공식 : d²=(X₂-X₁)²+(Y₂-Y₁)² )
(△루트를 사용할 수 없어 제곱으로 표시하였습니다.)
(초등학생까지 알수있게 풀어서 (거리)×(거리)={(가로)×(가로)}+{(세로)×(세로)} )
(덧셈, 곱셈도 안배우셨다면 낭패;;)

--------------------------------------------------------------------------

일단 플레이어와 몬스터의 좌표가 필요합니다.
그리고 변수가 2+몬스터수만큼 더 필요합니다.

앞의 변수 2개를 임의적으로

- 변수1 : 계산용_X
- 변수2 : 계산용_Y

로 놓겠습니다.

☆1) 원형범위공격

- (계산용_X)=(플레이어좌표_X)
- (계산용_X)-(몬스터1좌표_X)
- (계산용_X)×(계산용_X)

까지 했다면 계산용_X의 값은

- (계산용_X)={(플레이어좌표_X)-(몬스터1좌표_X)}²

위와 같이 됩니다.
계산용_Y의 값 또한 계산용_X과 같은 방법으로 구합니다.

- 변수3 : 몬스터1거리지수

과 같은 방법으로 몬스터의 수만큼 변수를 만들고

- (몬스터1거리지수)=(계산용_X)²+(계산용_Y)²

이렇게까지 했다면 거리지수라는 변수는 거리의 제곱이다라는 결론이 나옵니다.
그러면 이제 각 몬스터마다 거리지수라는 값이 생겼습니다.
(참고로 계산용_X과 계산용_Y가 하나씩이므로 한꺼번에 거리지수를 구하면 안되고)
(X좌표계산, Y좌표계산, 거리지수에 대입한 후 다음것의 거리지수를 구해야합니다.)

이 값을 나열해본다면

(36)(25)(16)(9)(4)(1)(*)(1)(4)(9)(16)(25)(36)
(37)(26)(17)(10)(5)(2)(1)(2)(5)(10)(17)(26)(37)
(40)(29)(20)(13)(8)(5)(4)(5)(8)(13)(20)(29)(40)
(45)(34)(25)(18)(13)(10)(9)(10)(13)(18)(25)(34)(45)
(52)(41)(32)(25)(20)(17)(16)(17)(20)(25)(32)(41)(52)
(61)(50)(41)(34)(29)(26)(25)(26)(29)(34)(41)(50)(61)
(72)(61)(52)(45)(40)(37)(36)(37)(40)(45)(52)(61)(72)

감이 안오신다면 숫자마다 다르게 표현해보죠

(36)(◁)(△)(◎)(○)(☆)(*)(☆)(○)(◎)(△)(◁)(36)
(37)(26)(▷)(◇)(●)(★)(☆)(★)(●)(◇)(▷)(26)(37)
(40)(29)(◀)(◆)(◎)(●)(○)(●)(◎)(◆)(◀)(29)(40)
(45)(34)(◁)(▽)(◆)(◇)(◎)(◇)(◆)(▽)(◁)(34)(45)
(52)(41)(32)(◁)(◀)(▷)(△)(▷)(◀)(◁)(32)(41)(52)
(61)(50)(41)(34)(29)(26)(◁)(26)(29)(34)(41)(50)(61)
(72)(61)(52)(45)(40)(37)(36)(37)(40)(45)(52)(61)(72)

위 표현으로는 뭔가 모르겠군요.
이번엔 4까지의 범위를 표현하겠습니다.

(8)(5)(●)(5)(8)
(5)(●)(●)(●)(5)
(●)(●)(*)(●)(●)
(5)(●)(●)(●)(5)
(8)(5)(●)(5)(8)

어라? 이번엔 8을 제외한 9까지의 범위를 표현하겠습니다.

(18)(13)(10)(●)(10)(13)(18)
(13)(8)(●)(●)(●)(8)(13)
(10)(●)(●)(●)(●)(●)(10)
(●)(●)(●)(*)(●)(●)(●)
(10)(●)(●)(●)(●)(●)(10)
(13)(8)(●)(●)(●)(8)(13)
(18)(13)(10)(●)(10)(13)(18)

이제 감이 확 오실껍니다.
그 다음에 올 것은 몬스터의거리지수가 해당 범위내에 있을 조건분기가 되겠죠.

☆2) 직선형 범위공격

기본적인 방법은 원형범위공격과 같습니다만

그 전에
플레이어가 위 아래로 있을땐 X좌표
플레이어가 좌 우로 있을땐 Y좌표로
우선 범위를 정해줘야합니다.

예를 들면 3줄짜리 직선이 쭉 나가는 마법이라면
플레이어가 위로 향해 있을때

- 계산용_X = {(플레이어좌표_X)-(몬스터1좌표_X)}²= 1 이하

가 되어야겠죠.
그런 다음엔 마법이 뒤까지 나가진 않으니 이번엔 Y좌표로

- (플레이어좌표_Y)-(몬스터1좌표_Y) = 0 이상

처럼 될껍니다.(알만툴은 왼쪽 상단 끝이 0,0이므로 몬스터가 아래에 있다면 값이 영하가 됩니다.)

--------------------------------------------------------------------------

다음과 같이 거리지수를 이용한다면 범위마법을 구성하는데 어려움이 어느정도 덜게 됩니다.
이상 놀고먹는수험생 polaris君이었습니다 (__)
?
  • ?
    のㅏ②뜨 2009.07.06 02:57
    직선거리의 계산공식이라고도 할수 있겠지만
    이건 원의 방정식에 더 가까울수 있을것같습니다
    으헣허허헣 수학도 그냥 배우는게 아니라는 생각이 듭니다
    이런데에 응용까지 할수 있으면 이제 할거 다해먹은걸테죠

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
304 언어/기타 몬스터의 인공지능 재티s 2006.01.17 1618
303 언어/기타 삼국지처럼 계급시스템을... 2006.01.17 550
302 언어/기타 문장에다가 변수의 값을 나타내자 file 사토루 2006.01.17 571
301 RPG Maker 프린세스메이커3를 만들어보자!!①.오프닝편 Ress 2006.01.16 1619
300 RPG Maker [토파즈]대화, 선택지, 상인 만들기 양키 2006.01.16 432
299 언어/기타 정말 쓸모없는 일입니다만 저가 쓰고있는방법... 無正死人 2006.01.16 315
298 언어/기타 어째서 몬스터는 플레이어에게 쫓겨 다녀야 하는가? rukia 2006.01.16 593
297 RPG Maker 육성RPG 『연금술사』 2006.01.16 987
296 언어/기타 변수만으로 자동회복하기. 초보XPer 2006.01.14 270
295 RPG Maker [초급]RPG2003 (프로젝트 만들기) 카스-오로치 2006.01.14 416
294 RPG Maker [초급] RPG2003 (숲을 가꾸어봅시다.) 카스-오로치 2006.01.14 417
293 RPG Maker [초급]RPG2003 [숲을 가꾸어 봅시다. -1] 카스-오로치 2006.01.14 309
» RPG Maker [RPG2K~XP] 좌표를 통한 범위공격 1 Polaris君 2006.01.14 981
291 RPG Maker 게임메이커 기본개념 걸인소년 2006.01.14 341
290 RPG Maker 게임메이커 기본개념 걸인소년 2006.01.14 267
289 RPG Maker 게임메이커 기초개념 file 걸인소년 2006.01.14 933
288 언어/기타 릴레이 게임제작 어때요? 고고고시 2006.01.13 495
287 언어/기타 제가 지금 NPC가 말하는 것을 하려고 하는데 어떻게 하죠? 게임만들기폐인 2006.01.13 409
286 언어/기타 자연스러운 커다란 맵에 스크린샷 나른한지지 2006.01.12 535
285 언어/기타 나를 로긴하게한 MP3기능 간장맛봉봉 2006.01.11 549
Board Pagination Prev 1 ... 31 32 33 34 35 36 37 38 39 40 ... 51 Next
/ 51






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

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