RPG2K 범위 공격 : [y >= x^2] 을 이용
2007.01.09 23:30
수학적 강의가 많이 나와서 행복합니다.
저는 이차부등식 범위에 대해서 설명하겠습니다.
이 식을 생각하게 된 계기는
선생님이 몇개월 전에 이차방정식을 설명할때, '에x르x파! 같은 공격을 만들려면 어떻게 해야 될라나'
라는 것에서 출발했습니다. 그걸 염두에 두세요 -_-
일단 정의부터 시작합니다.
y=x^2 (x^2 = x의 제곱입니다)
위의 식은 2차부등식입니다. 그래프로 그리면,
( a^2 = a의 제곱입니다. )
이렇게 곡선 형의 그래프가 나옵니다.
여기서, 주인공의 XY좌표를 Sx, Sy 라 하고, 이벤트의 XY좌표를 a,b라고 할 때 절대 좌표를 (a-Sx) , (b-Sy) 라고 합시다.
(y ≥ x^2)에 대입하면,
(b-Sy) ≥ (a-Sx)^2 (y ≥ x^2)
입니다.
이걸 좌표에 적용하려면 문제점이 하나 생기는데요.
만약 저것을
..이런저런(에xx기파 정도의)...공격용으로 쓰려면
주인공이 위쪽으로 보고있을 때는 위의 그래프대로 하면 되지만
아래쪽으로 보고 있을 때는 식이
y ≤ -x^2 입니다.
오른쪽으로 보고 있을 때는
x ≥ y^2
왼쪽으로 보고 있을 때는
x ≤ -y^2
이렇게 식이 바뀝니다.
그러므로 조건 분기(if)를 사용해서 바꿔줘야 하는데요.
if, 주인공이 위 쪽을 향하고 있다.
then , if, (b-Sy) ≥ (a-Sx)^2 (y ≥ x^2)
then 공격 성립
not, end
not, if 주인공이 아래 쪽을 향하고 있다.
then, if, .....
이런 식이죠.
단점 :
저번의 원의 방정식과는 달리 노가다입니다. 연산속도도 매우 느려질 겁니다.
하지만 어쩔수 없는것이 저런 형태의 범위를 구하려면 식이 각각 다르므로, 원의 방정식과 같이 식이 하나인 것과는 좀 차이가 있습니다.
맵에 보이는 녀석과 맵 밖에 있는 범위에 포함되는 녀석 모두 공격을 받습니다.
(이건 좋은건지 나쁜건지 모르겠지만 게임밸런스상 뭔가 좀 터무니 없이 범위가 넓으므로.
하지만 이 식의 원래 형태는 y=a(x-m)^2+n 이므로 a값을 크게 해 주면 별 상관없어 보임 --;)
그리고 또 단점이라면 RPG2000의 특성으로 -_-
자연수만 지원한다는 것.
(아나 생각이 있기는 있냐 엔터브레인)
자연수만 지원함으로 인해 생기는 결과는,
01. 완벽한 곡선이 아닌 울퉁불퉁 곡선이 나온다는 점.
(이건 거의 모든 식에 적용되는 사항인듯.)
02. 식이 매우 복잡해집니다.
게다가 무려 자연수이므로, 음수값이 나오면 안되니까
Sx >a 일 경우의 조건분기(a-Sx 일 경우 음수가 나오는데, 음수 지원이 안되므로 ) 까지 넣어서 사용해야 합니다.
RPGXP에서는 정수값(+,-)이 지원이 되므로 좀 더 수월하게 만들 수 있지만
RPG2000에서는 약간 무리입니다.
그러므로 활용성은 매우 떨어진다는 결론.
결국 활용 파트는, 수요공급(대체 이런 경제관련게임이 나오기나 할까..) 정도의 곡선그래프에서 써먹을 수 있다는 겁니다.
학교 수학시간에 내내 이것만 계산하고 식 세워봤는데
결국 좌표에 적용할 경우, if 문이 대략 21개 정도 나옵니다.
식을 세워볼까요?
(이거 어차피 틀린 식이니까 재껴도 상관없음니다 후후--;)
get a,b,Sx,Sy // 좌표값을 각 변수에 넣습니다.
//그리고 연산을 수월하게 하기 위해 Attx, Atty란 변수를 2개 더 둡니다.
//X좌표 계산.
if, a≥Sx
then, a-Sx (이때, 결과값은 a에 있다.)
Attx = a
not, a
Sx-a (이때, 결과값은 Sx에 있다.)
Attx = Sx
end
//Y좌표 계산.
if, b≥Sy
then, b-Sy(이때, 결과값은 b에 있다.)
Atty = b
not, b
Sy-b (이때, 결과값은 Sy에 있다.)
Atty = Sy
end
// 자, 위의 결과로 절대좌표는 Attx, Atty에 있습니다. 그러므로,
if, 주인공이 위 쪽을 향하고 있다.
then , if, Sy>b,
then if, (Atty) ≥ (Attx)^2 (y ≥ x^2)
then 공격 성립
not, end
not, Sy
if, (Atty) ≥ (Attx)^2 (y ≥ x^2)
then 공격 성립
not, end
end
not, if, 주인공이 아래 쪽을 향하고 있다.
then, if, .....
이게 제가 세웠던 식인데요.
버스에서 생각해보니까 이 식도 완벽한 식이 아닙니다.
왜냐하면 음수 지원이 안되므로, Attx, Atty는 전부 양수입니다.
그런데 저 값이 원래는 음수인데 양수가 되버리는 꼴이니까 식에 대입하면 결과가 엉망진창 -_-;;;
해결책은요.
결국 Attx, Atty는 쓸모가 없으므로
주석 "//자, 위의 결과대로 샬라샬라" 위의 식을 홀라당 재끼고
...남은 식에다가 경우에 따라 달리 해야 됩니다.
Case 01. y<0 일 경우 아예 성립 안함.(위, 아래를 향할 때)
Case 02. x<0 일 경우 아예 성립 안함.(오른쪽, 왼쪽을 향할 때)
이건 정말이지 장점보단 단점이 훨씬 많아보이는군요.
결론 : 좌표용으론 적합하지 않다. 계산용으로만 쓰자. 그러나 쓰일려나 모르겠다.
(고마우신 수학선생 덕분에 귀중한 시간 날려봤습니다 이히히히ㅎ히힣히히힣^^ 젠장.)
댓글 7
-
새벽도둑
2007.01.10 00:40
(a,b)에서 a가 x축좌표니 b>a^2가 그래프의 안쪽에 위치하죠|+rp2+|2630|+rp3+|acoc_board_ideatip -
[CoWBoy]bebop
2007.01.10 00:56
아아; 그림이 잘못됬군요.|+rp2+|2631|+rp3+|acoc_board_ideatip -
새벽도둑
2007.01.10 02:19
그런데 R2k로 쓰기엔 무리가 있군요|+rp2+|2632|+rp3+|acoc_board_ideatip -
Spegel
2007.01.10 08:27
노가다 하면 불가능한 것도 아니지만 그렇게까지 예술성을 추구할 필요는 없으므로 .. 기각이네요.|+rp2+|2638|+rp3+|acoc_board_ideatip -
Yggdrasil
2007.01.20 02:33
화면좌표를 이용해줍시다|+rp2+|2681|+rp3+|acoc_board_ideatip -
[S's-S]
2007.01.22 19:23
여기 나온 문제점,단점은... 그다지 문제없어 보이는건 저뿐일까요 ㅡㅡㅋ
사실 좌표의 +-를 각각 나눠서 조건분기로 넣은건 tta,포트리스,기타 테스트 시스템등에서 여러번 썼었고
자연수만 지원하는 문제는 포트리스에서 소수점이하를 다른변수에 대입해서 해결했었죠....
맘만 먹으면 1/100만 까지도 계산 가능하지만 1픽셀로는 1이하는 차이가 없기 때문에 별상관 없죠
포트리스 경우는 소수점이하가 수십,수백번 누적되니 계산할 필요가 있었지만요
결론, 좌표용으로도 충분이 쓸모가 많다(?)|+rp2+|2693|+rp3+|acoc_board_ideatip -
싸이비클럽
2009.03.23 02:03
이게 뭐시여(수학 중2때 손놓은 문과생)|+rp2+|3285|+rp3+|acoc_board_ideatip
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
369 | 귀국 예고입니다. ^^; [3] | Zeprod | 2007.02.11 | 307 |
368 | 작은 팁하나..전투애니메이션의 픽쳐화! [10] | 윈드 | 2007.01.31 | 796 |
367 | 액알, 한번의 노가다로 끝까지 사용하자! [5] | RPG_매냐 | 2007.01.31 | 1001 |
366 | 원형 거리 측정(세 줄 스크립트) [2] | 타이머 | 2007.01.30 | 688 |
365 | [C] C는 어떤 언어이고 뭘 할 수 있는 언어일까? [3] | SeHwa | 2007.01.25 | 462 |
364 | 분수의 사용 [7] | Yggdrasil | 2007.01.24 | 460 |
363 | R2k로 퍼즐 만들기 [4] | 새벽도둑 | 2007.01.23 | 626 |
362 | 오직 RPGXP만 재생하지 못하는 MIDI파일 [5] | Les Paul | 2007.01.22 | 888 |
361 | 에에... 할일 없어서 해봤습니다... 카노 방식 이벤트 액알예제.... [2] | かの☆あおき | 2007.01.18 | 837 |
360 | [C++] template의 활용법 [1] | Zeprod | 2007.01.16 | 296 |
359 | BGM과 ME가 재생이 안될때 | View2er | 2007.01.16 | 393 |
358 | -Jindow_v0.1-체험판 [4] | -제이- | 2007.01.15 | 649 |
357 | 아이디어 하나.... [4] | 역습의 귀공자 | 2007.01.13 | 402 |
356 | 소개글 [봄이 남아있던 자리] [5] | Vermond | 2007.01.12 | 653 |
355 | 소개글 [산타클로스~수해와 수영] [5] | Vermond | 2007.01.10 | 616 |
» | 범위 공격 : [y >= x^2] 을 이용 [7] | Spegel | 2007.01.09 | 778 |
353 | 대기 [6] | 가다없는 | 2007.01.07 | 293 |
352 | [C++] WinAPI를 이용한 GUI 프로그래밍 [2] | Zeprod | 2007.01.07 | 645 |
351 | 잠입 게임 아이디어 [5] | 아르킨 | 2007.01.07 | 557 |
350 | 데미지의 최소값, 최대값을 설정해보자! ver 1.0 [6] | 『연금술사』 | 2007.01.04 | 898 |