RPG2K 이벤트를 이용, 장애물을 포함한 적과의 거리계산[중급이상추천]
2006.12.13 20:38
군대 가기도 전에 일인데 시클라멘님이었던가....
최대한 변수와 스위치를 적게쓰고 연산을 줄여서 적과 나의 거리를 구하는 방법을 공모했던 적이 있습니다.
그때는 생각이 안났는데 군대가 있는 동한 떠오르는게 있어서 적어봅니다.
카스테라 5를 뜯어보신분은 아시겠지만 적들의 원거리공격을 처리하기 위하여
저는 우선 무조건 직선으로 날아가는 총알을 만들어 놓은 후에
적이 공격할 타이밍이 되면 적의 위치를 변수로 구해서 총알을 적의 위치로 이동했습니다.
그럼 적이 총알을 발사한것처럼 보이죠.
이것도 같은 원리인것
말하자면 총알은 총알이되 주인공을 향해 이동하는 유도탄을 생각하면 되겠습니다.
게다가 이 총알은 보이지 않는다고 상상해 봅시다.
만약 [적과 나의 거리가 3칸 안일때 자고있던 적이 깨어나서 날 공격한다] 라는 상황.
보이지는 않지만 적은 계속해서 보이지 않는 유도탄을 쏩니다. 이 유도탄은 주인공에게 닿으면 적이 공격을 개시하는
범위 인식 이벤트라고 합시다.
범위 인식 이벤트의 행동은 이렇습니다
적의 좌표를 구해 적의 위치로 이동한 후
주인공을 향해 이동(이것을 적의 범위만큼 반복)
범위만큼 반복한 후에는 제자리로 이동합니다.
유도탄의 빠르기를 최대로 설정하면 모든것은 실시간으로 처리되는것처럼 보일 것이다.
범위가 커질수록 오차도 커지겠지만......화면을 초과하는 범위는 써먹을데도 없을것이라는 판단하에......
즉
1.변수로 적의 좌표를 구함
2.구한 적의 좌표에다 범위인식이벤트(유도탄)을 이동시킴
3.유도탄은 범위만큼(예제에서는 3칸으로 정함)이동한후 다시 적의 위치로 이동
4. 2와 3을 반복하다가 유도탄이 주인공과 닿으면 적은 공격을 개시.
이 방법의 묘미는 적과 주인공 사이에 장애물이 있으면 적이 인식을 하지 못한다는것입니다.....
변수로 이걸 하자면 또 변수 깨나 소모될것.....
하하....변수 구해서 피타고라스 공식 구하는것보다 뛰어나지 않은가....
사실 2000시리즈의 인공지능이라봤자 칸 단위로 계산하기 때문에 계산법은 피타고라스 공식 쓰는게 더
정확하긴 해도 행동결과로 보면 똑같은것.......이지요....마사....
-견적표-
적 1체당 변수 2개가 필요하며 스위치는 1개가 필요합니다.
주인공위치변수는 필요없습니다.
이벤트의 속성을 손봐주면 풀숲은 통과하지만 벽은 통과못한다던가.....하는 응용이 가능할겁니다.
댓글 10
-
메카_탁
2006.12.14 02:37
-
masa
2006.12.14 03:25
후후....그래서 속도를 최대로 해주는것이죠.
어차피 화면을 초과하는 범위라는게 써먹을일도 많은게 아닌지라.|+rp2+|2514|+rp3+|acoc_board_ideatip -
메카_탁
2006.12.14 03:31
범위가 4만 되도 장애물 아래 건넛편이 범위에 해당될것 같은데요? ;;
컴퓨터가 ㄷ자로 돌아가버릴수도 있는..
그리고 속도 최대도 8배이니.. 반대로 도망가버리면 약간의 오차는 감수해야겠군요 .. ㅠㅠ
역시 범위에 관해서는 다소 패널티가..; |+rp+|2514|+rp2+|2515|+rp3+|acoc_board_ideatip -
기브
2006.12.25 02:09
천재시군요~!! 와 대단합니다. 어떻게 저런 것을 생각하죠;; 전 머리가 쓰레기라서 ㅠ|+rp2+|2552|+rp3+|acoc_board_ideatip -
[S's-S]
2007.01.03 00:04
으흠 역시 TTA3에서 쓸수는 없겠군요 ㅜㅜ
총알을 이벤트로 처리하는 같으니.. 각도의 조절이 자유롭지 않을듯;
|+rp+|2514|+rp2+|2592|+rp3+|acoc_board_ideatip -
[S's-S]
2007.01.03 00:05
게다가 대각선의 경우엔 아예 적용이 안되는 문제도 있군요... |+rp+|2514|+rp2+|2593|+rp3+|acoc_board_ideatip -
[S's-S]
2007.01.03 00:09
흠.. 오래되서 2k 기능이 잘 생각나지 않지만
X,Y 좌표에 있는 타일의 이동가능,불가 를 읽어오는 기능이 있었나요?
그게 가능하다면 좀더 확실하게 할수 있겠는데.. |+rp+|2514|+rp2+|2594|+rp3+|acoc_board_ideatip -
메카_탁
2007.01.07 09:50
타일의 X,O를 읽는건 불가능하지만 하위칩같은경우 지형설정으로 1~10 혹은 그 이상의 숫자를 각 타일별로 지정할수 있고 일정 X,Y좌표의 지형 ID취득이 가능합니다. 다방면으로 많이 쓰이는 이벤트커멘드죠;
마사님 글에 이벤트 ID취득을 이용한 이동제한을 걸어준다면 화면 X,Y좌표가 아니라 SRPG의 이동 가능범위 정도를 표현할수 있을것같네요; |+rp+|2514|+rp2+|2613|+rp3+|acoc_board_ideatip -
목없는기사
2007.05.06 22:39
너무 자학하시는거 아니신지.. |+rp+|2552|+rp2+|2903|+rp3+|acoc_board_ideatip -
다크아머
2008.04.15 03:04
아하! 이런 방법이 있었군함... 이걸 몰라서 맨날 해매다니 나도 머리가 돌인가봐|+rp2+|3226|+rp3+|acoc_board_ideatip
범위가 커지면 오차가 꽤 커질것같네요..
주인공을 따라감에서 범위 바로 아래에 장애물이 있을시 돌아서 가버리는 경우도 발생할수 있으니..
좁은범위에선 좋을지도 있지만.. 반응이 약간 느리지 않을까요?
SRPG까지는 괜찮겠지만 액알로가면..;|+rp2+|2513|+rp3+|acoc_board_ideatip