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. [RPG2000,2003]게이지쉽게 만드는법

  2. [Rpg2000,2003]주인공의 나이상승하게 하기

  3. [RPG2000/3 팁] 간편한 이벤트 단축키

  4. [RPG2000/3 팁] 간편한 이벤트 단축키

  5. [rpg2000]페이지의 순서와 이벤트의 출력

  6. [RPG2003] 한단계 도약 : 이중 변수번호의 변수

  7. [rpg2k] 바로가기를 이용해 테스트 플레이 실행하기

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

  9. [RXP]윈도우 만들기 1탄-윈도우 제작

  10. [RXP]윈도우 만들기 2탄-텍스트 삽입

  11. [RXP]윈도우 만들기 3탄-특이한 텍스트들(변수편)

  12. [RXP]윈도우 만들기 3탄-특이한 텍스트들(프레임편)

  13. [RXP]윈도우 만들기 4탄-스페셜 윈도우(샐랙터블 편)

  14. [RXP]윈도우 만들기 4탄-스페셜 윈도우(커맨드)

  15. [TIP]RXP에서 돈 99999999 한번에 올리기

  16. [VB] SRPG의 이동경로는 어떻게? (1)

  17. [VB] SRPG의 이동경로는 어떻게? (2)

  18. [VX] 메뉴화면에 이어하기를 넣는 스크립트...

  19. [VX] 집안의 블라인드 다듬기 ~2차 블라인드

  20. [VX] 창문으로 빛이 뚫고 나오게 하기 [뽀샵]

Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 15 Next
/ 15






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

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