Project1

标题: ( • ̀ω•́ )能不能做到事件分别从X或Y轴接近主角呢? [打印本页]

作者: MeowSnow    时间: 2014-7-17 18:58
标题: ( • ̀ω•́ )能不能做到事件分别从X或Y轴接近主角呢?
(,,• ₃ •,,) 想做个酱紫的追逐戏,不是普通RM种跟着主角跑,
(,,• ₃ •,,) 主角被汽车追,所以车扭来扭曲不是很奇怪嘛?
(,,• ₃ •,,) 想做个车先运动的X轴平行于主角,然后Y轴距离缩短冲过来,
(,,• ₃ •,,) 或者Y轴慢慢垂直,X轴开始缩短冲过来,
(,,• ₃ •,,) 就是酱紫,不能理解的话……就不要理解了,一起坐等大触吖!
作者: 恐惧剑刃    时间: 2014-7-17 19:24
本帖最后由 恐惧剑刃 于 2014-7-18 10:38 编辑

示例 创建任意一个事件
移动路线中脚本 toward(nil, $game_player.y)  看看效果吧?主动接近主角的Y坐标

脚本有点小问题,习惯性把变量命名为 ax,ay 但下方需要的变量名称可不是这么写的~
  1. #==============================================================================
  2. # ■ Game_Character (分割定义 4)
  3. #------------------------------------------------------------------------------
  4. #  处理角色的类。本类作为 Game_Player 类与 Game_Event
  5. # 类的超级类使用。
  6. #==============================================================================

  7. class Game_Character
  8.   #--------------------------------------------------------------------------
  9.   # ● 接近
  10.   #--------------------------------------------------------------------------
  11.   # 使用方法 :
  12.   # 事件=>设置移动路线=>脚本=>输入=>toward(目标的X坐标, 目标的Y坐标)
  13.   # 可以单方向接近,只需把“目标的X坐标”或者“目标的Y坐标”传nil就可以
  14.   #--------------------------------------------------------------------------
  15.   # 目标的X既可以是主角也可以是事件甚至可以是纯坐标
  16.   # 主角的X坐标 $game_player.x
  17.   # 主角的Y坐标 $game_player.y
  18.   # 事件的X坐标 $game_map.events[事件的id].x
  19.   # 事件的T坐标 $game_map.events[事件的id].y
  20.   #--------------------------------------------------------------------------
  21.   def toward(x = nil, y = nil)
  22.     return if x == nil and y == nil
  23.     if x == nil
  24.       # 求坐标差
  25.       sy = @y - y
  26.       return if sy == 0
  27.       sy > 0 ? move_up : move_down
  28.     elsif y == nil
  29.       # 求坐标差
  30.       sx = @x - x
  31.       return if sx == 0
  32.       sx > 0 ? move_left : move_right
  33.     else
  34.       # 求坐标差
  35.       sx = @x - x
  36.       sy = @y - y
  37.       
  38.       # 绝对值
  39.       abs_sx = sx.abs
  40.       abs_sy = sy.abs
  41.       
  42.       return if abs_sx <= 1 and abs_sy <= 1
  43.       
  44.       # 横距离与纵距离相等的情况下
  45.       if abs_sx == abs_sy
  46.         # 随机将边数增加 1
  47.         rand(2) == 0 ? abs_sx += 1 : abs_sy += 1
  48.       end
  49.       # 横侧距离长的情况下
  50.       if abs_sx > abs_sy
  51.         # 左右方向优先。向主角移动
  52.         sx > 0 ? move_left : move_right
  53.         if not moving? and sy != 0
  54.           sy > 0 ? move_up : move_down
  55.         end
  56.       # 竖侧距离长的情况下
  57.       else
  58.         # 上下方向优先。向主角移动
  59.         sy > 0 ? move_up : move_down
  60.         if not moving? and sx != 0
  61.           sx > 0 ? move_left : move_right
  62.         end
  63.       end
  64.     end
  65.    
  66.    
  67.   end
  68. end
复制代码

作者: MeowSnow    时间: 2014-7-17 20:13
恐惧剑刃 发表于 2014-7-17 19:24
示例 创建任意一个事件
移动路线中脚本 toward(nil, $game_player.y)  看看效果吧?主动接近主角的Y坐标
...


(ノ°ο°)ノ 变成这个样子了




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1