RPGXP RPGXP xy의 치명적 문제를 보완하자
2006.11.19 00:25
RPG2K엔 없는 RPGXP의 빡세게 치명적인 단점이 있다.
x와 y에 대한 것이다-_-
일단
def move_down(turn_enabled = true)
# 아래를 향한다
if turn_enabled
turn_down
end
# 통행 가능한 경우
if passable?(@x, @y, 2)
# 아래를 향한다
turn_down
# 좌표를 갱신
@y += 1
# 보수 증가
increase_steps
# 통행 불가능한 경우
else
# 접촉 이벤트의 기동 판정
check_event_trigger_touch(@x, @y+1)
end
end
이 스크립트를 보자
저기 굵은 글씨를 주목할 필요가 있다
move_down은 한번 실행하면 반복적으로 실행해서 y를 계속 다운시킨다.
엔터브레인 스크립터 누구냐?
뭐 이렇게 짜는 지 참 ㄱ-
저게 무슨 문제가 있냐? 하면 액알 같은거 만들때입니다.
원거리 공격 같은걸 만들때 실제적으론 마주치지 않았는데 이동중인 애는 x값이나 y값이 조낸 비정상적입니다.
두 칸이 가로로 있다고 가정할때 주인공이 왼쪽 칸에서 오른쪽칸으로 반 이동하는 중이라면
주인공의 x값은 0이나 1이어야 정상이죠?
하지만 x값이 약 16정도가 됩니다.
얼마나 심각한지 아시겠음?[..]
그래서 마주쳤는데도 그냥 지나가 엉뚱한데서 히트판정이 나는 개안습의 상황이 연출되는 것입니다.
근본적인 문제라고 생각-_-
이 문제로 인해 문제가 생기면 진짜
혈압이 짝짝 오릅니다
진짜 누가 이렇게 만들었냐[..]
x와 y를 좋게 만들러면 이 시스템을 갈아엎어야 하는데
존내 복잡할 뿐더러 제게 그런 실력이 없습니다.
방법은 저 스크립트에 휘둘리지 않는 x와 y를 만드는 것.
그 x와 y를 orig_x, orig_y로 합시다.
왜냐고? orig=original=오리지날=원형
...넘어가죠[..]
Game_Character 1 부분에서
attr_reader :orig_x # 맵 X 좌표 (Moving중에도 변하지 않음)
attr_reader :orig_y # 맵 Y 좌표 (Moving중에도 변하지 않음)
를 붙입시다.
저게 뭐냐?
인스턴스 변수는 클레스 안에서만 쓸 수 있는 폐쇠적인(?) 변수입니다.
하지만 저렇게 해놓으면
만일 class 돌날라봤자 안에 인스턴스 술을열어볼래가 있으면
돌날라봤자 안에서만 @술을열어볼래 를 쓸 수 있습니다만
만일
attr_reader :술을열어볼래
또는
attr_accessor :술을열어볼래
를 위에 단 후에
댈러맨디 = 돌날라봤자.new
댈러맨디.술을열어볼래
를 통해 인스턴스변수를 쓸 수 있습니다-_-;;
Q:attr_reader와 attr_accessor의 차이는 대체 뭡니까?
A:내가 묻고 싶은 말입니다 ㅠㅠ 대체 차이가 뭡니까 ㅠㅠ
어쨋든 위의 저걸 붙이구요
def original_xy_take
unless moving?
@orig_x = @x
@orig_y = @y
end
end
붙이는 법은 Game_Character 1의 구석진 곳에 쳐넣으면 됩니다.
대충 잘 붙이시리라 믿고
@x와 @orig_x는 같고
@y와 @orig_y는 같게 하는겁니다.
그러면 그게 그거 아냐? 할 수 있습니다.
unless moving?가 그에 대한 답.
moving?이 뭘 뜻하는지는 다 아시죠? XP의 x와 y가 이상해지는 문제는 이동중일때만 해당됩니다.
unless는 if의 반대. 그니까 이동중이 아닐때만 x와 y를 이어받는다
그러므로 RPG2K의 x,y처럼 제구실을 할 수 있게 된다는 거죠.
Game_Character 2에 def update가 있죠?
그 안 어딘가에다 original_xy_take를 쳐박으세요.
그래야 저 original_xy_take 함수를 실행하죠.(RPG2K의 이벤트 불러오기와 같은 기능)
저 orig_x와 orig_y는 마주치기 판정, 액알 등에서 문제가 발생하지 않고 잘 굴러가게 해줄 겁니다.
그럼 ㅅㄱㅎㅅㅇ
댓글 5
-
BAYONET
2006.11.21 23:06
이런거 상당히 유용한데 ㅡ.ㅡ; 강의실에 올라가서 다들 볼수 있게 하면 좋겠군요|+rp2+|2676|+rp3+|bibup -
알피지 2003 ★
2006.11.30 03:28
wow~~! bayonet님 말에 동감!! ㅎ|+rp2+|2706|+rp3+|bibup -
아란
2006.12.26 21:21
제목이 xy길래, 새로 툴이 나온 줄 알았;;|+rp2+|2750|+rp3+|bibup -
준돌
2006.12.29 07:13
으흠...
제가 2003을 다뤄보지 않아서 잘모르는것일진 모르겠지만
xp의 x,y좌표는 살짝 타이밍이 어긋나는것 외에
님이 말하신거같은 오류는 없는거 같은데여.........
본문내용중에 0이나 1이여야 되는데 16이 되있다고 하시는말씀은
근거없는 내용인거 같은데...
그런 심각성 따위는 없습니다...너무 과장된 설명이 아니신지....
액알 스크립트를 만들때 님이 말하신거같은 오류가 생기는 이유는
님이 말하신것같은 xp스크립트 원본 자체의 문제가 아니라
스크립트를 만드는사람이 update와 연동된 메소드에
unless moving? 을 해놓지않고 1초에 40번씩 move_xxx 를 실행시켜
아직 다 움직이지도 않았는데 자꾸 @x 나 @y가 쓸때없이 커져버리게 되어
생기는 문제인거 같습니다
물론 저렇게 하면 어떤곳에서 쓸모가 있을진 모르겠지만
오류의 원인을 이상한데서 찾으시고 엔터브레인측 스크립터의
근본적인 문제로 돌리는것은 좀 이상하다고 봅니다..|+rp2+|2755|+rp3+|bibup -
협객
2007.07.17 05:13
저는 그보다도 reader와 accessor의 기본적인 차이조차도 모르는 사람이 감히 스크립트 원본 자체의 문제를 주장할 자격이 있다고 믿고 있다는 것이 희한하다고 봐요. ㅡ.ㅡ;;;;
reader는 밖에서 읽기만 할 수 있는 변수이고 accessor는 밖에서 수정할 수 있는 변수를 뜻합니다.
예를 들어
x = 댈러맨디.술을열어볼래
라고 하면 x의 값은 댈러맨디.술을열어볼래의 값이 됩니다. 이 경우 reader건 accessor건 같지만,
댈러맨디.술을열어볼래 = x
이렇게 했을 경우 reader는 변수가 없다고 튕기고 accessor는 술을 열어볼래의 값을 x의 값으로 갱신합니다. |+rp+|2755|+rp2+|2989|+rp3+|bibup
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
491 | 이론강의 1. Vnap이란? [2] | Vermond | 2006.12.04 | 189 |
490 | 스타포지의 추가 설명 [2] | 다크세이버™ | 2006.11.29 | 175 |
489 | 그냥 아주 간단한 정보정도 일까나? [3] | mk_brand_ | 2006.11.29 | 180 |
488 | 스타맵 제작에 사용하는 다른 툴들.. [6] | OTL군 | 2006.11.28 | 218 |
487 | 스타크래프트 디펜스 맵에 도전한다!! 1 편 [4] | 다크세이버™ | 2006.11.25 | 147 |
486 | 셔츠그리기 [7] | 카타린 | 2006.11.25 | 773 |
485 | 외부문자 정복하자! [12] | 아름다운마을 | 2006.11.25 | 324 |
484 | 조만간 강의를 시작해볼까합니다. [2] | MrGeek | 2006.11.23 | 129 |
483 | 시나리오 제작 팁 - 소년만화적 전개법 [1] | BAYONET | 2006.11.22 | 208 |
482 | 나도 장거리 액션알피지 만들수있다.!!! [초보편] [3] | *YeNa* | 2006.11.20 | 481 |
» | RPGXP xy의 치명적 문제를 보완하자 [5] | A. 미스릴 | 2006.11.19 | 727 |
480 | [초보]액션 RPG의 원리 [9] | 천룡수 | 2006.11.01 | 641 |
479 | 초보를 위한 강좌... [2] | 네모상자 | 2006.10.31 | 264 |
478 | 비트 연산자 | dnajs | 2006.10.10 | 47 |
477 | 논리 연산자 | dnajs | 2006.10.10 | 37 |
476 | 관계형연산자 | dnajs | 2006.10.10 | 43 |
475 | if문 | dnajs | 2006.10.10 | 43 |
474 | if개요 | dnajs | 2006.10.10 | 38 |
473 | 스타 맵을 만들어 볼까? -폭피 2- [3] | 다크세이버™ | 2006.10.05 | 98 |
472 | 스타 맵을 만들어 볼까? -폭피 1- [4] | 다크세이버™ | 2006.10.05 | 114 |