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
    직선거리의 계산공식이라고도 할수 있겠지만
    이건 원의 방정식에 더 가까울수 있을것같습니다
    으헣허허헣 수학도 그냥 배우는게 아니라는 생각이 듭니다
    이런데에 응용까지 할수 있으면 이제 할거 다해먹은걸테죠

  1. XP버전 이름입력처리 초보자용

  2. 공격패턴의 다양화

  3. 죄송합니다!!질문입니다!!!!!!!!!(타일관련;;)

  4. [초급]숲을 가꾸어 봅시다.

  5. 공격패턴의 다양화

  6. RPG XP 배워보기 <이벤트소멸효과>

  7. 프린세스메이커3를 만들어보자!!①.오프닝편

  8. [토파즈]대화, 선택지, 상인 만들기

  9. 육성RPG

  10. [초급]RPG2003 (프로젝트 만들기)

  11. [초급] RPG2003 (숲을 가꾸어봅시다.)

  12. [초급]RPG2003 [숲을 가꾸어 봅시다. -1]

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

  14. 게임메이커 기본개념

  15. 게임메이커 기본개념

  16. 게임메이커 기초개념

  17. [R2K] 타이틀 제작하기

  18. 제글읽고 답좀...

  19. rpg2000 퀘스트 하는법좀 초보자에게 맞게

  20. 로봇의 변신 시스템

Board Pagination Prev 1 ... 5 6 7 8 9 10 11 12 13 14 15 Next
/ 15






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

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