设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1511|回复: 0
打印 上一主题 下一主题

[已经过期] class Game_Character可以修改成快捷类吗

[复制链接]

Lv4.逐梦者

梦石
0
星屑
7817
在线时间
1344 小时
注册时间
2015-8-15
帖子
753
跳转到指定楼层
1
发表于 2022-12-1 09:24:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
class Game_Character能否改成  class Game_Shortcut_key


RUBY 代码复制
  1. class Game_Character
  2.   #--------------------------------------------------------------------------
  3.   # ● 指定イベントに近づく ●接近指定活动
  4.   #--------------------------------------------------------------------------
  5.   def move_toward_event(id)
  6.     # 指定イベントの座標との差を求める #求出与指定事件坐标的差
  7.     sx = @x - $game_map.events[id].x
  8.     sy = @y - $game_map.events[id].y
  9.     # 坐标相等时
  10.     if sx == 0 and sy == 0
  11.       return
  12.     end
  13.     # 差の絶対値を求める #求差的绝对值
  14.     abs_sx = sx.abs
  15.     abs_sy = sy.abs
  16.     # 横の距離と縦の距離が等しい場合#横向距离和纵向距离相等时
  17.     if abs_sx == abs_sy
  18.       # ランダムでどちらかを 1 増やす #随机增加1
  19.       rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
  20.     end
  21.     # 横の距離のほうが長い場合 横向距离较长时
  22.     if abs_sx > abs_sy
  23.       # 左右方向を優先し、指定イベントのいるほうへ移動
  24.       #优先左右方向,向有指定事件的方向移动
  25.       sx > 0 ? move_left : move_right
  26.       if not moving? and sy != 0
  27.         sy > 0 ? move_up : move_down
  28.       end
  29.     # 縦の距離のほうが長い場合 纵向距离较长时
  30.     else
  31.       # 优先上下方向,向有指定事件的方向移动
  32.       sy > 0 ? move_up : move_down
  33.       if not moving? and sx != 0
  34.         sx > 0 ? move_left : move_right
  35.       end
  36.     end
  37.   end
  38.   #--------------------------------------------------------------------------
  39.   # ● 指定イベントから遠ざかる #距离指定事件
  40.   #--------------------------------------------------------------------------
  41.   def move_away_from_event(id)
  42.     # 指定イベントの座標との差を求める
  43.     #求出与指定事件坐标的差
  44.     sx = @x - $game_map.events[id].x
  45.     sy = @y - $game_map.events[id].y
  46.     # 座標が等しい場合#坐标相等时
  47.     if sx == 0 and sy == 0
  48.       return
  49.     end
  50.     # 差の絶対値を求める求差的绝对值
  51.     abs_sx = sx.abs
  52.     abs_sy = sy.abs
  53.     # 横の距離と縦の距離が等しい場合
  54.     #横向距离和纵向距离相等时
  55.     if abs_sx == abs_sy
  56.       # ランダムでどちらかを 1 増やす
  57.       #随机增加1
  58.       rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
  59.     end
  60.     # 横の距離のほうが長い場合#横向距离较长时
  61.     if abs_sx > abs_sy
  62.       # 左右方向を優先し、指定イベントのいないほうへ移動
  63.       #优先左右方向,向没有指定事件的方向移动
  64.       sx > 0 ? move_right : move_left
  65.       if not moving? and sy != 0
  66.         sy > 0 ? move_down : move_up
  67.       end
  68.     # 縦の距離のほうが長い場合
  69.     #  纵向距离较长时
  70.     else
  71.       # 上下方向を優先し、指定イベントのいないほうへ移動
  72.       #优先上下方向,向没有指定事件的方向移动
  73.       sy > 0 ? move_down : move_up
  74.       if not moving? and sx != 0
  75.         sx > 0 ? move_right : move_left
  76.       end
  77.     end
  78.   end
  79.   #--------------------------------------------------------------------------
  80.   # ● 指定座標に近づく#接近指定坐标
  81.   #--------------------------------------------------------------------------
  82.   def move_toward_position(x, y)
  83.     # 座標の差を求める #求坐标差
  84.     sx = @x - x
  85.     sy = @y - y
  86.     # 座標が等しい場合 坐标相等时
  87.     if sx == 0 and sy == 0
  88.       return
  89.     end
  90.     # 求差的绝对值
  91.     abs_sx = sx.abs
  92.     abs_sy = sy.abs
  93.     # 横の距離と縦の距離が等しい場合
  94.     # 横向距离和纵向距离相等时
  95.     if abs_sx == abs_sy
  96.       # ランダムでどちらかを 1 増やす
  97.       #随机增加一个
  98.       rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
  99.     end
  100.     # 横の距離のほうが長い場合
  101.     # 横向距离较长时
  102.     if abs_sx > abs_sy
  103.       sx > 0 ? move_left : move_right
  104.       if not moving? and sy != 0
  105.         sy > 0 ? move_up : move_down
  106.       end
  107.     # 縦の距離のほうが長い場合
  108.     # 纵向距离较长时
  109.     else
  110.       sy > 0 ? move_up : move_down
  111.       if not moving? and sx != 0
  112.         sx > 0 ? move_left : move_right
  113.       end
  114.     end
  115.   end
  116.   #--------------------------------------------------------------------------
  117.   # ● 指定座標から遠ざかる ●远离指定坐标
  118.   #--------------------------------------------------------------------------
  119.   def move_away_from_position(x, y)
  120.     # 座標の差を求める 求坐标差
  121.     sx = @x - x
  122.     sy = @y - y
  123.     # 座標が等しい場合 坐标相等时
  124.     if sx == 0 and sy == 0
  125.       return
  126.     end
  127.     # 差の絶対値を求める 求差的绝对值
  128.     abs_sx = sx.abs
  129.     abs_sy = sy.abs
  130.     # 横の距離と縦の距離が等しい場合
  131.     # 横向距离和纵向距离相等时
  132.     if abs_sx == abs_sy
  133.       # ランダムでどちらかを 1 増やす
  134.       # 随机增加一个
  135.       rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
  136.     end
  137.     # 横の距離のほうが長い場合
  138.     # 横向距离较长时
  139.     if abs_sx > abs_sy
  140.       sx > 0 ? move_right : move_left
  141.       if not moving? and sy != 0
  142.         sy > 0 ? move_down : move_up
  143.       end
  144.     # 縦の距離のほうが長い場合
  145.     #纵向距离较长时
  146.     else
  147.       sy > 0 ? move_down : move_up
  148.       if not moving? and sx != 0
  149.         sx > 0 ? move_right : move_left
  150.       end
  151.     end
  152.   end
  153.   #--------------------------------------------------------------------------
  154.   # ● 指定イベントの方を向く ●面向指定活动
  155.   #--------------------------------------------------------------------------
  156.   def turn_toward_event(id)
  157.     # 指定イベントの座標との差を求める
  158.     #求出与指定事件坐标的差
  159.     sx = @x - $game_map.events[id].x
  160.     sy = @y - $game_map.events[id].y
  161.     # 座標が等しい場合 坐标相等时
  162.     if sx == 0 and sy == 0
  163.       return
  164.     end
  165.     # 横の距離のほうが長い場合
  166.     #横向距离较长时
  167.     if sx.abs > sy.abs
  168.       # 左右方向で指定イベントのいるほうを向く
  169.       # 在左右方向朝向有指定活动的方向
  170.       sx > 0 ? turn_left : turn_right
  171.     # 縦の距離のほうが長い場合 #纵向距离较长时
  172.     else
  173.       # 上下方向で指定イベントのいるほうを向く
  174.       # 在上下方向朝向有指定活动的方向
  175.       sy > 0 ? turn_up : turn_down
  176.     end
  177.   end
  178.   #--------------------------------------------------------------------------
  179.   # ● 指定イベントの逆を向く
  180.   #--------------------------------------------------------------------------
  181.   def turn_away_from_event(id)
  182.     # 指定イベントの座標との差を求める
  183.     sx = @x - $game_map.events[id].x
  184.     sy = @y - $game_map.events[id].y
  185.     # 座標が等しい場合
  186.     if sx == 0 and sy == 0
  187.       return
  188.     end
  189.     # 横の距離のほうが長い場合
  190.     if sx.abs > sy.abs
  191.       # 左右方向で指定イベントのいないほうを向く
  192.       sx > 0 ? turn_right : turn_left
  193.     # 縦の距離のほうが長い場合
  194.     else
  195.       # 上下方向で指定イベントのいないほうを向く
  196.       sy > 0 ? turn_down : turn_up
  197.     end
  198.   end
  199.   #--------------------------------------------------------------------------
  200.   # ● 指定座標の方を向く
  201.   #--------------------------------------------------------------------------
  202.   def turn_toward_position(x, y)
  203.     # 座標の差を求める
  204.     sx = @x - x
  205.     sy = @y - y
  206.     # 座標が等しい場合
  207.     if sx == 0 and sy == 0
  208.       return
  209.     end
  210.     # 横の距離のほうが長い場合
  211.     if sx.abs > sy.abs
  212.       sx > 0 ? turn_left : turn_right
  213.     # 縦の距離のほうが長い場合
  214.     else
  215.       sy > 0 ? turn_up : turn_down
  216.     end
  217.   end
  218.   #--------------------------------------------------------------------------
  219.   # ● 指定座標の逆を向く
  220.   #--------------------------------------------------------------------------
  221.   def turn_away_from_position(x, y)
  222.     # 座標の差を求める
  223.     sx = @x - x
  224.     sy = @y - y
  225.     # 座標が等しい場合
  226.     if sx == 0 and sy == 0
  227.       return
  228.     end
  229.     # 横の距離のほうが長い場合
  230.     if sx.abs > sy.abs
  231.       sx > 0 ? turn_right : turn_left
  232.     # 縦の距離のほうが長い場合
  233.     else
  234.       sy > 0 ? turn_down : turn_up
  235.     end
  236.   end
  237.   #--------------------------------------------------------------------------
  238.   # ● 指定範囲内をランダムに移動
  239.   #--------------------------------------------------------------------------
  240.   def move_random_area(x, y, distance)
  241.     # 自分とエリア中心の座標の差を求める
  242.     sx = @x - x
  243.     sy = @y - y
  244.     # 既に範囲外にいる場合
  245.     if sx.abs + sy.abs > distance
  246.       # エリア中心に近づく
  247.       move_toward_position(x, y)
  248.       return
  249.     end
  250.     # とりあえずどの方向に進むか決定した後に距離判定
  251.     case rand(4)
  252.     when 0  # 下に移動
  253.       if sx.abs + sy < distance
  254.         move_down(false)
  255.       end
  256.     when 1  # 左に移動
  257.       if -sx + sy.abs < distance
  258.         move_left(false)
  259.       end
  260.     when 2  # 右に移動
  261.       if sx + sy.abs < distance
  262.         move_right(false)
  263.       end
  264.     when 3  # 上に移動
  265.       if sx.abs - sy < distance
  266.         move_up(false)
  267.       end
  268.     end
  269.   end
  270. end
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-23 02:23

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表