조회 수 1050 추천 수 1 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 수정 삭제
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄 수정 삭제

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는 마주치기 판정, 액알 등에서 문제가 발생하지 않고 잘 굴러가게 해줄 겁니다.


그럼 ㅅㄱㅎㅅㅇ 

?

  1. 물체 밀어서 움직이는 이벤트 조금 더 쉽게 하는 법

  2. [마지막 3명 모집] [취업연계무료교육] VR/AR 게임 콘텐츠 전문가 양성 과정 교육생 모집

  3. rpg vxa 로 겜만들때 데미지 설정 공식[링크]

  4. [꿀팁] 간단하게 만들 수 있는 실시간 전투 시스템

  5. JSON parser 변환데이터 저장시 생기는 Object Too Deep 해결하기

  6. 앙뜨프리너십에서 해커톤 부트캠프 모집중이네요

  7. RPG MV에서 플러그인 오류의 원인에 대하여

  8. RPG MV 게임 도중에 윈도우 스킨 파일 자체를 통째로 바꿔버리는 방법 (출처: HIME)

  9. 게임의 버전을 짜 보자! - 유의적 버전 2.0.0

  10. 텍스트 대화 도중 메뉴 여는 방법을 알아냈습니다!

  11. rpgmv 마우스 지원과 터치 지원이 되니.

  12. RPG Maker MV 와 AJAX를 이용한 웹통신 관련 영상.

  13. RPG게임 뻔한요소들.

  14. 자바스크립트와 관련해서 참고할 만한 사이트들

  15. 꿀잼이군요!

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

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

  18. [강의링크] 대비법칙-색상대비-밀당의 재미 약한 반대색 설계

  19. 오다 주웠습니다.

  20. 무료 이미지 사이트 Pixabay!

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


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

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