질문과 답변

Extra Form


#==============================================================================
# Zenith RGSS6 「移動ルートの設定」拡張  ver1.30
#   by 水夜
#  http://zenith.ifdef.jp/
#------------------------------------------------------------------------------
# ありそうでなかったルート指定を追加します。
#==============================================================================
class Game_Character
  #--------------------------------------------------------------------------
  # ● 指定イベントに近づく
  #--------------------------------------------------------------------------
  def move_toward_event(id)
    # 指定イベントの座標との差を求める
    sx = @x - $game_map.events[id].x
    sy = @y - $game_map.events[id].y
    # 座標が等しい場合
    if sx == 0 and sy == 0
      return
    end
    # 差の絶対値を求める
    abs_sx = sx.abs
    abs_sy = sy.abs
    # 横の距離と縦の距離が等しい場合
    if abs_sx == abs_sy
      # ランダムでどちらかを 1 増やす
      rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
    end
    # 横の距離のほうが長い場合
    if abs_sx > abs_sy
      # 左右方向を優先し、指定イベントのいるほうへ移動
      sx > 0 ? move_left : move_right
      if not moving? and sy != 0
        sy > 0 ? move_up : move_down
      end
    # 縦の距離のほうが長い場合
    else
      # 上下方向を優先し、指定イベントのいるほうへ移動
      sy > 0 ? move_up : move_down
      if not moving? and sx != 0
        sx > 0 ? move_left : move_right
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 指定イベントから遠ざかる
  #--------------------------------------------------------------------------
  def move_away_from_event(id)
    # 指定イベントの座標との差を求める
    sx = @x - $game_map.events[id].x
    sy = @y - $game_map.events[id].y
    # 座標が等しい場合
    if sx == 0 and sy == 0
      return
    end
    # 差の絶対値を求める
    abs_sx = sx.abs
    abs_sy = sy.abs
    # 横の距離と縦の距離が等しい場合
    if abs_sx == abs_sy
      # ランダムでどちらかを 1 増やす
      rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
    end
    # 横の距離のほうが長い場合
    if abs_sx > abs_sy
      # 左右方向を優先し、指定イベントのいないほうへ移動
      sx > 0 ? move_right : move_left
      if not moving? and sy != 0
        sy > 0 ? move_down : move_up
      end
    # 縦の距離のほうが長い場合
    else
      # 上下方向を優先し、指定イベントのいないほうへ移動
      sy > 0 ? move_down : move_up
      if not moving? and sx != 0
        sx > 0 ? move_right : move_left
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 指定座標に近づく
  #--------------------------------------------------------------------------
  def move_toward_position(x, y)
    # 座標の差を求める
    sx = @x - x
    sy = @y - y
    # 座標が等しい場合
    if sx == 0 and sy == 0
      return
    end
    # 差の絶対値を求める
    abs_sx = sx.abs
    abs_sy = sy.abs
    # 横の距離と縦の距離が等しい場合
    if abs_sx == abs_sy
      # ランダムでどちらかを 1 増やす
      rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
    end
    # 横の距離のほうが長い場合
    if abs_sx > abs_sy
      sx > 0 ? move_left : move_right
      if not moving? and sy != 0
        sy > 0 ? move_up : move_down
      end
    # 縦の距離のほうが長い場合
    else
      sy > 0 ? move_up : move_down
      if not moving? and sx != 0
        sx > 0 ? move_left : move_right
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 指定座標から遠ざかる
  #--------------------------------------------------------------------------
  def move_away_from_position(x, y)
    # 座標の差を求める
    sx = @x - x
    sy = @y - y
    # 座標が等しい場合
    if sx == 0 and sy == 0
      return
    end
    # 差の絶対値を求める
    abs_sx = sx.abs
    abs_sy = sy.abs
    # 横の距離と縦の距離が等しい場合
    if abs_sx == abs_sy
      # ランダムでどちらかを 1 増やす
      rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
    end
    # 横の距離のほうが長い場合
    if abs_sx > abs_sy
      sx > 0 ? move_right : move_left
      if not moving? and sy != 0
        sy > 0 ? move_down : move_up
      end
    # 縦の距離のほうが長い場合
    else
      sy > 0 ? move_down : move_up
      if not moving? and sx != 0
        sx > 0 ? move_right : move_left
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● 指定イベントの方を向く
  #--------------------------------------------------------------------------
  def turn_toward_event(id)
    # 指定イベントの座標との差を求める
    sx = @x - $game_map.events[id].x
    sy = @y - $game_map.events[id].y
    # 座標が等しい場合
    if sx == 0 and sy == 0
      return
    end
    # 横の距離のほうが長い場合
    if sx.abs > sy.abs
      # 左右方向で指定イベントのいるほうを向く
      sx > 0 ? turn_left : turn_right
    # 縦の距離のほうが長い場合
    else
      # 上下方向で指定イベントのいるほうを向く
      sy > 0 ? turn_up : turn_down
    end
  end
  #--------------------------------------------------------------------------
  # ● 指定イベントの逆を向く
  #--------------------------------------------------------------------------
  def turn_away_from_event(id)
    # 指定イベントの座標との差を求める
    sx = @x - $game_map.events[id].x
    sy = @y - $game_map.events[id].y
    # 座標が等しい場合
    if sx == 0 and sy == 0
      return
    end
    # 横の距離のほうが長い場合
    if sx.abs > sy.abs
      # 左右方向で指定イベントのいないほうを向く
      sx > 0 ? turn_right : turn_left
    # 縦の距離のほうが長い場合
    else
      # 上下方向で指定イベントのいないほうを向く
      sy > 0 ? turn_down : turn_up
    end
  end
  #--------------------------------------------------------------------------
  # ● 指定座標の方を向く
  #--------------------------------------------------------------------------
  def turn_toward_position(x, y)
    # 座標の差を求める
    sx = @x - x
    sy = @y - y
    # 座標が等しい場合
    if sx == 0 and sy == 0
      return
    end
    # 横の距離のほうが長い場合
    if sx.abs > sy.abs
      sx > 0 ? turn_left : turn_right
    # 縦の距離のほうが長い場合
    else
      sy > 0 ? turn_up : turn_down
    end
  end
  #--------------------------------------------------------------------------
  # ● 指定座標の逆を向く
  #--------------------------------------------------------------------------
  def turn_away_from_position(x, y)
    # 座標の差を求める
    sx = @x - x
    sy = @y - y
    # 座標が等しい場合
    if sx == 0 and sy == 0
      return
    end
    # 横の距離のほうが長い場合
    if sx.abs > sy.abs
      sx > 0 ? turn_right : turn_left
    # 縦の距離のほうが長い場合
    else
      sy > 0 ? turn_down : turn_up
    end
  end
  #--------------------------------------------------------------------------
  # ● 指定範囲内をランダムに移動
  #--------------------------------------------------------------------------
  def move_random_area(x, y, distance)
    # 自分とエリア中心の座標の差を求める
    sx = @x - x
    sy = @y - y
    # 既に範囲外にいる場合
    if sx.abs + sy.abs > distance
      # エリア中心に近づく
      move_toward_position(x, y)
      return
    end
    # とりあえずどの方向に進むか決定した後に距離判定
    case rand(4)
    when 0  # 下に移動
      if sx.abs + sy < distance
        move_down(false)
      end
    when 1  # 左に移動
      if -sx + sy.abs < distance
        move_left(false)
      end
    when 2  # 右に移動
      if sx + sy.abs < distance
        move_right(false)
      end
    when 3  # 上に移動
      if sx.abs - sy < distance
        move_up(false)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ● パーティー n 人目のグラフィックに変更
  #--------------------------------------------------------------------------
  def set_graphic_party(n)
    # アクターの取得
    actor = $game_party.actors[n - 1]
    # アクターが存在しない場合 (none) に
    if actor == nil
      @character_name = ""
      return
    end
    # グラフィック変更
    @tile_id = 0
    @character_name = actor.character_name
    @character_hue = actor.character_hue
  end
end
 
이런형식의 스크립트인데
보니깐 이런스크립트더라고요 예를들어이동경로를
주인공에게 다가감이라고해도
al멍청해서 
 
ㅇ←주인공 ㅁ←방해물 ㅅ←주인공에게다가가는al
    ㅁ      ㅣ
ㅇㅁㅅ   ㅣ
    ㅁ       ㅣ
-------------
 
이런형식으로 있으면
옆으로움직여서 가까이가지않고
그대로멈춰있잖아요
이런걸방지하기위해서 아오오니제작자가
이 스크립트를쓴거같은데
문제는 이용법을모르겠거든요 ㅜㅜ
가르쳐주세요 ㅜㅠ
그리고 추가해서 아오오니  이동경로를확인해보니깐
@move_speed = 4.1
이런스크립트가있더라고요 아무래도 속도를미세하게 조절하는
스크립트인거같은데 이스크립트아시는분없나요 ㅜ
 
 
 
Comment '1'
  • ?
    허걱 2012.07.25 17:44
    http://avangs.info/kin/290902
    스크립트는 txt 파일 등으로 첨부하시기 바랍니다.

List of Articles
종류 분류 제목 글쓴이 날짜 조회 수
공지 묻고 답하기 가이드 습작 2014.06.14 12392
RMXP [스크립트]특정 문자열 포함 여부 확인 방법 6 말짱꽝이지롱 2012.07.21 1419
RMVXA 타이틀메뉴 스크립트 질문 4 file 몽롱 2012.07.22 1797
RMXP rpg xp 에서 스크립트 만드는데 자바스트립트쓰나요? 1 OK간지남 2012.07.23 1650
RMVX 슬립 데미지 설정 3 Plossom 2012.07.23 2132
RMXP 데미지 공식 변환 방법이???? 2 말짱꽝이지롱 2012.07.24 1347
RMXP 넷북, 『아수스 Eee PC X101』에서 RMXP가 돌아가나요? 6 Krrrr7 2012.07.24 1445
RMVXA 레벨 업 후 경험치 3 Blue Moon 2012.07.24 1275
RMXP RGSS 문법에 관한 질문2가지 1 말짱꽝이지롱 2012.07.25 1490
기타 RPG로 만들수 있는 메이플스토리나 그런것을 만들고 싶어요. 어떻게 만들면 좋을까요? 3 루미너스 2012.07.25 1196
RMXP 밑에 스크립트 적용시키고 싶은데 어떻게 해야되요? ㅠ.ㅠ 1 by100 2012.07.25 811
RMVXA 레벨 업 후 경험치 1 Blue Moon 2012.07.25 815
RMXP 이동 루트의 설정및확장 스크립트 이용법좀 가르쳐주세요 ㅜㅜ (아오오니제작할줄아시는분들플리즈!!) 1 러쉬 2012.07.25 904
RMXP 턴알전투에서 에러가 뜨나봐요 3 쿠키쿠키 2012.07.25 1040
RMVX 게임 시작시 질문입니다 2 Xin 2012.07.26 923
RMVXA 전투불능이 되어도 게임오버가 되지 않게하려면? 11 제이니 2012.07.26 1508
RMXP ABS_v3액션 알피지 쓰는법좀가르쳐주세요! 4 러쉬 2012.07.26 766
RMVXA ace srpg 스크립트 오류 2 김놈똥 2012.07.26 1327
RMXP (스크립트)장비 착용 유무 확인방법 2 말짱꽝이지롱 2012.07.26 1295
RMVX 움직이는 NPC 방향고정과 관련된 질문입니다 2 타카나시 소라 2012.07.27 1240
RMVX RPG만들기vx메뉴에서 세이브삭제하는방법 1 Robin.black™ 2012.07.27 2078
Board Pagination Prev 1 ... 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 ... 516 Next
/ 516